2 Firm, 2 Good Spatial Consumption Model with Time-Inconsistency
Traditionally, economics has focussed primarily on explaining what and how much consumers will wish to purchase, paying little attention to the space in which these transactions take place. In this paper I explore the behaviour that consumers make when deciding where they purchase goods, and provide a theoretical justification for possible inconsistencies in these decisions. The inconsistency discussed hereafter is that of time-inconsistency, when the consumer makes contrasting decisions at different points in time, despite being faced with identical choices. In the context of the 2-firm, 2-good model proposed in this paper, time-inconsistency constitutes two possible outcomes: 1. when the consumer plans to shop at a single firm, but after travelling to said firm, changes their mind and chooses to shop at both; or 2. they plan to purchase goods at both firms, but change their mind at the initially visited firm, and do not undertake the extra travel to the other firm. I find that how consumers value their time entirely determines which outcome is realised. If the consumer’s disutility of time function is strictly convex, only the former outcome can happen. If the consumer’s disutility of time function is strictly concave, only the latter outcome can happen. If they have linear disutility of time, no time-inconsistency can ever occur. I finish the paper with an application to an experiment conducted by Tversky and Kahneman (1981).
1 Introduction and Literature Review
Shopping may be becoming increasingly online, but consumers are still being posed with the problem, not of what to buy, but of where to purchase goods. Regularly, consumers know what they want to buy, but then need to decide which firm is best to shop at. Take, for example, grocery shopping: one may have a corner shop very nearby and a large supermarket further away. The corner shop is clearly convenient, but it is also likely more expensive than the supermarket. The consumer must weigh the time savings of the corner shop against the expenditure savings of the supermarket. If they know that the corner shop is actually cheaper for some items but more expensive for others, they may even choose to shop at both stores, in order to minimise their expenditure, even though this requires more time.
Humans are not completely rational beings though, particularly when failing to make consistent decisions over time. It has been well documented that humans can often exhibit time-inconsistent behaviour across a range of scenarios (Thaler (1981)) (Benzion, Rapoport, and Yagil (1989)) (Redelmeier and Heller (1993)). In the context of spatial consumption, a consumer may plan to only shop at the supermarket, with it being generally cheaper, but then after getting there may make the decision to also go to the corner shop. This takes more time, but they may save money on a few items. They already knew this though. The only difference is the time at which they made the decision, but they changed their mind anyway. This is the kind of inconsistent behaviour that I will model in this paper, focussing exclusively on the situations where the consumer may alter their choice of firm to shop at. I will not model inconsistencies in what the consumer wishes to purchase, nor how much they wish to purchase. The consumption bundle will be fixed, explicitly assuming that the consumer will not change this at any time.
The previous research on spatial economics focuses mainly on production and agglomeration. Alonso (1964) Monocentric City model and the subsequent Polycentric models (Fujita and Ogawa (1982)) and new economic geography (Krugman (1991)Khalil (1992)) (Fujita (1993)) all attempt to explain the spatial distribution of firms and households within towns, cities and regions, but do not explain the individual decision-making processes in economic activities.
There has been considerable research regarding the firm side of this problem. In both Hotelling (1929) linear model and Salop (1979) circular model it is assumed that consumers are spatially distributed along a unit line and around a circle respectively, but they focus on the firms’ location problem, and less on the consumer. Gupta, Pal, and Sarkar (1997) explained how similar firms tend to agglomerate if they compete on quantity but will disperse if they compete on prices, using location as a form of product differentiation. Lederer and Hurter (1986) present a spatial model of a Bertrand duopoly with a distribution of consumers only consuming a sole unit of a single good at the lowest price possible.
Previous research, however, gives little consideration to the consumers’ choice problem, in relation to the consumption of goods and services, at the individual level. Early work on spatial consumer choice by Brush (1966) assumed that consumers shop at the closest store, but research by Craig (n.d.) has violated this assumption. Their work suggests that consumers may prefer a store which is further away, if they are compensated for the extra travel.
There is extensive research and evidence for time-inconsistent behaviour, it mostly concerns the issues of what people buy, comparisons of monetary rewards, and typical self-control problems of effort and procrastination. There is surprisingly little application to decisions of where one may choose to travel. Osogami and Morimura (2012) assess the issue of time-consistency in travel decisions, where the agent must choose a route from one node to another but the travel times between nodes are stochastic, due to uncertain traffic density. Although this model is very different to that which I propose in this paper, the authors do highlight how an agent’s decision may change as they follow their planned route, and how this changes depending on the shape of the objective function used.
The model used in this paper combines the economic concepts of cost minimisation and utility functions with networks, primarily used in decision mathematics, to create a spatial consumption model into which I will induce time-inconsistent behaviour.
The rest of the paper is organised as follows. In section 2 the model is formally presented, and an important graphical interpretation is provided and explained. In section 3 the concept of time-inconsistency within the context of the model is addressed. Throughout this section the effect of the functional form of the disutility function on time-inconsistent behaviour is shown. Section 4 relates to a criticism of this model regarding an experiment conducted by Tversky and Kahneman (1981), and a suggestion for how the model can be adjusted to assuage these concerns. In section 5 final conclusions are presented with possible avenues for future research on this topic.
2 The Model
Before delving fully into the model, I must first explain the concept of the disutility of time, and how it is defined throughout this paper. According to economists, everything has value, and everyone has their own individual valuation of everything. ‘Everything’ is clearly not limited to goods and services, but must include the air we breathe, the environment, our health, the health and happiness of others, and many, many more things, such as time. Time has value in a similar way to how money has value, it comes from what you can do with it. Traditionally, the value of time is equated to what one must give up to gain a marginal unit of it: the opportunity cost of time. In most models, the opportunity cost of leisure time is the wage rate, as people’s time is only divided into leisure time and labour time.
One could argue that time spent shopping should be part of leisure time as it can be seen as a leisure activity, however for rather mundane purchases, such as groceries, one could argue that it should be separate. In this paper the latter is assumed, based on the assumption that a consumer is unlikely to reduce their working hours in order to shop, thus the opportunity cost of shopping, no matter how enjoyable, is the lost leisure that could be spent on more ‘traditional’ leisure activities, such as going to the cinema, meeting friends, or playing sport. Alternatively, one can distinguish between two different types of shopping: shopping for necessities, which is unlikely to be a leisure activity; and shopping for luxuries, which can be included in leisure time. In this case, the model solely focusses on the consumption of necessities, with the opportunity cost still equal to the marginal utility of leisure time, thus both definitions lead to equivalent values of shopping time. It is also assumed that the consumer will always prefer leisure time to shopping time, meaning that the marginal utility of shopping time is always negative. It will therefore be optimal to minimise the time spent shopping, subject to the constraint that they must purchase their desired goods.
To model these preferences, I introduce various disutility functions for shopping time (hereafter referred to as just time, for simplicity). These functions map time to disutility (hereafter referred to as the time cost), and their differing shapes prove very important in determining whether the consumer is time-consistent. These functions, and their intuition, are elaborated in section 3, so what follows is the explanation of the core of the model.
In addition to the time cost, I identify another cost, the ‘direct’ cost, which is the disutility from giving up money to pay for the goods. Throughout this paper, I assume unit marginal utility of money, which implies that the direct costs are equal to the expenditure on the goods.
To the end of simplicity, assume a sole consumer with a ‘shopping list’ consisting of only 2 products, x_1 and x_2, and they have 2 firms to choose between, 1 and 2. These goods are homogenous across both firms, and it is assumed that there are no external factors, such as customer service or brand loyalty, that may affect the consumer’s decision. This ensures that the only factors affecting the decision of the consumer are the prices and the time costs.
The times are made up of three different time expenditures: travelling between home and the firms (denoted as \(θ^1\) and \(θ^2\) for firm 1 and 2 respectively); travelling between firms (denoted as \(\phi\) ϕ); and shopping at the firms (denoted as \(s^1\) and \(s^2\)). For additional simplicity assume the shopping time to be equal at both firms (\(s^1=s^2=s\)), which one may expect in similarly sized stores with similar products 1. As there are only two firms, there are only three possible times, reflecting only three possible routes that the consumer can take: - They buy both goods from firm 1, only incurring the costs of travelling to and from firm 1; - They buy both goods from firm 2, only incurring the costs of travelling to and from firm 2; - They buy one good from each firm, thus incurring the cost to firm 1, from firm 1 to firm 2, and from firm 2 to home, or the opposite direction which is the same time.
Given the above specifications, the components to the model are characterised as follows:
\[ X = \begin{bmatrix} x_1^1 & x_1^2 \\ x_2^1 & x_2^2 \end{bmatrix}\quad \text{where}~x_i^j~\text{is the quantity of good}~i~\text{bought at firm}~j; \]
\[ \bar{X} = \begin{bmatrix} \bar{x_1} \\ \bar{x_2} \end{bmatrix}\quad \text{where} \bar{x_i} = x_i^1+x_i^2~\text{for}~i=1,2; \]
\[ P = \begin{bmatrix} p_1^1 & p_1^2 \\ p_2^1 & p_2^2 \end{bmatrix}\quad \text{where}~p_i^j~\text{is the price of good}~i~\text{bought at firm}~j; \]
\[ \Theta = \begin{bmatrix} \theta^1 \\ \theta^2 \end{bmatrix}\quad \text{where}~\theta^j~\text{is the time taken to travel between home and firm }j; \]
\(s\) is the time taken shopping at either firm;
\(\phi\) is the time taken to travel between firms 1 and 2;
\(t=\tau(X)\) where \(\tau\) maps the consumption decision X (i.e. which firms to go to) into a total time variable \(t\);
Firstly, the ‘direct’ costs are simply the total expenditure \((e)\):
\[ C_P (X)=e(X)=(x_1^1 p_1^1+x_2^1 p_2^1+x_1^2 p_1^2+x_2^2 p_2^2 ) \tag{1}\]
We can simplify this further as, in the optimum, the agent will not spread the consumption of the same good over both firms. Suppose the consumer goes to both firms to get all of \(x_1\) at firm 1 and some of \(x_2\) at firm 2, then it must be that \(x_2\) is cheaper at firm 2 than at firm 1, thus it cannot be optimal to only buy some of \(x_2\) at firm 2 and the rest at firm 1. Because the consumer must consume all of the two goods, \(x_1^1+x_1^2=\bar{x_1}\) and \(x_2^1+x_2^2=\bar{x_2}\), thus these terms can be substituted in for \(x_1^2\) and \(x_2^2\) to simplify the direct costs to:
\[ C_P (x_1^1,x_2^1 )=e(x_1^1,x_2^1 )=x_1^1 (p_1^1-p_1^2 )+x_2^1 (p_2^1-p_2^2 )+\bar{x_1} p_1^2+\bar{x_2} p_2^2 \tag{2}\]
This expression is slightly longer but has fewer choice variables and provides some interesting, but rather trivial, conclusions. From the first term \([x_1^1 (p_1^1-p_1^2)]\), one can see that if \(p_1^1>p_1^2\), then to minimise \(C_P\), the consumer will set \(x_1^1\) equal to the lowest possible value, zero. The converse is also true: if \(p_1^1<p_1^2\), then the consumer will set \(x_1^1\) at the maximal value of \(\bar{x_1}\). Thus, for all values of \(p_1^1\) and \(p_1^2\), \(x_1^1\) can optimally only equal 0 or \(\bar{x_1}\). If \(p_1^1=p_1^2\) then the direct cost of good 1 has no effect on the minimisation, as it will be constant at \(\bar{x_1} p_1^2=\bar{x_1} p_1^1\). This makes the consumer’s choice only based upon good 2, so it is optimal to only go to one firm. The story is exactly the same for the second term too \([x_2^1 (p_2^1-p_2^2 )]\), concerning the quantity of good 2. Another possibility is that both firms have the same prices for both goods, then the direct cost function has no choice variables and is just constant \([(x_1 ) ̅p_1^2+(x_2 ) ̅p_2^2 ]\). In this case, the decision problem is simply a time cost minimisation.
Secondly, it is immediately clear from I, II and III above that the \(\tau\) function can only map X to three different values of t, regardless of the price structure:
- \(t=\tau(\bar{x_1}, \bar{x_2})=2\theta^1+s\), if the consumer only goes to firm 1 (i.e. \(x_1^1=\bar{x_1}\), \(x_2^1=\bar{x_2}\), \(x_1^2=0\) and \(x_2^2=0\));
- \(t=\tau(0,0)=2\theta^2+s\), if the consumer only goes to firm 2 (i.e. \(x_1^1=0\), \(x_2^1=0\), \(x_1^2=\bar{x_1}\) and \(x_2^2=\bar{x_2}\));
- \(t=\tau(\bar{x_1},0)=\tau(0,\bar{x_2})=θ^1+θ^2+2s+\phi\), if the consumer goes to both firms in any way.
For now, it is assumed that the consumer’s disutility is linear in time, meaning that \(C_T (x_1^1,x_2^1 )=t\). This implies that there are only three possible time costs and they are equal to the three times listed above:
- \(C_T (\bar{x_1},\bar{x_2})=2\theta^1+s\), if the consumer only goes to firm 1;
- \(C_T (0, 0)=2\theta^2+s\), if the consumer only goes to firm 2;
- \(C_T (\bar{x_1},0)=(0,\bar{x_2})=\theta^1+\theta^2+2s+\phi\), if the consumer goes to both firms.
Both costs are combined to yield an expression for the total cost minimisation problem:
\[ \min_{x_1^1, x_2^1} C(x_1^1,x_2^1 )= C_P (x_1^1,x_2^1 )+ C_T (x_1^1, x_2^1) \tag{3}\]
To solve this minimisation problem, one must understand that there are 4 possible outcomes which the consumer should minimise, and then choose the lowest total cost. Thus, it is assumed that the consumer employs a minimin strategy, first minimising the direct costs for each scenario, then choosing the lowest minimised cost scenario. These costs are listed below (in the form of demand at firm 1 \(C(x_1^1,x_2^1 )\)):
\[ C(\bar{x_1}, \bar{x_2})=\bar{x_1}p_1^1+\bar{x_2}p_2^1+2\theta^1+s \tag{4}\]
\[ C(0, 0)=\bar{x_1}p_1^2+\bar{x_2}p_2^2+2\theta^2+s \tag{5}\]
\[ C(\bar{x_1}, 0)=\bar{x_1}p_1^1+\bar{x_2}p_2^2+\theta^1+\theta^2+2s+\phi \tag{6}\]
\[ C(0, \bar{x_2})=\bar{x_1}p_1^2+\bar{x_2}p_2^1+\theta^1+\theta^2+2s+\phi \tag{7}\]
For clarity, equation 4 is where the consumer only goes to firm 1, 5 is when they only go to firm 2, 6 is when they buy good 1 from firm 1 and good 2 from firm 2, and 7 is when they buy good 1 from firm 2 and good 2 from firm 1.
Note that the time costs are the same in 6 and 7, so these costs are easy to compare, as the consumer will just choose the lower direct cost. This will mean that one of 6 and 7 can quickly be dismissed once the prices become known.
For this model to provide some interesting insight, the effects of the time cost and prices on the decisions of the consumer must be assessed. Due to the number of variables, there are many permutations, so it is easiest to assume something about the price structure and then see what this may imply. First, it is known that for 6 or 7 to be optimal, one firm cannot be cheaper for both goods, thus if \(p_1^1<p_1^2\) and \(p_2^1<p_2^2\), and vice versa, then the consumer will definitely only go to one firm. Thus, these two possibilities are an ideal place to begin.
Assume that \(p_1^1<p_1^2\) and \(p_2^1<p_2^2\), this means that firm 1 is cheaper for both goods, thus the direct costs are minimised at firm 1. This, however, does not mean that firm 1 will minimise total costs, as it may be further away. To measure this, introduce the two price differentials \(\epsilon_1=p_1^2-p_1^1\) and \(\epsilon_2=p_2^2-p_2^1\) (this format will be used throughout to show the difference in prices). The above assumption on prices implies that \(\epsilon_1,\epsilon_2>0\). Subtracting one cost 5 from the other 4 yields an expression for the cost difference:
\[ \Delta C=C(\bar{x_1}, \bar{x_2})-C(0,0)=-(\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2)+2(\theta^1-\theta^2) \tag{8}\]
Obviously, what is important is whether equation 8 is positive or negative, as this result will predict the behaviour of the consumer. Equation 9 is a fundamental equation, as it shows the trade-off between time and money.
\[ \Delta C\gtreqless0\Leftrightarrow 2(\theta^1-\theta^2)\gtreqless\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2 \tag{9}\]
This is quite a simple result, the difference in costs is positive if the difference in time costs is larger than the difference in direct costs, and equal or negative if equal or smaller respectively. Here, a positive ∆C implies that the consumer only shops at firm 2, as firm 1 must be so far away that the expenditure savings do not compensate for the time cost. As it has been assumed that \(\epsilon_1,\epsilon_2>0\), it is possible for \(\Delta C<0\) even if \(\theta^1>\theta^2\), implying that the consumer may optimise by shopping at a store that is cheaper but farther away.
The other similar situation is \(p_1^1>p_1^2\) and \(p_2^1>p_2^2\), thus \(\epsilon_1,\epsilon_2<0\). This does not fundamentally change 8 or 9, only changing the assumption of the sign of the ‘\(\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2\)’ term.
In both cases, the difference in cost is simply determined by the difference in the expenditure differentials (\(\bar{x_1}\epsilon_1\) and \(\bar{x_2}\epsilon_2\)) and the time differential (\(\theta^1-\theta^2\)).
An interesting note here is that the difference in costs is not only dependent on the difference in the firms’ prices, but also on the quantity of goods the consumer demands. As the consumer demands larger quantities of the goods the direct cost differential (\(\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2\)) gets larger, thus making \(\Delta C\) smaller. Therefore, as the quantities of goods demanded increases it is more likely that the consumer will shop at the cheaper firm. Contrastingly, if they only want a small quantity of the goods, they are more likely to go to the closer firm with higher prices. For example, imagine one has a Tesco very nearby (within 5-minutes walking) and an Aldi further away (about a half-hour walk), and assume that Tesco is more expensive than Aldi for both goods. Suppose that one is making simple jam sandwiches for oneself, so one only needs a small jar of jam and a small loaf of bread. As the difference in direct costs will be small, one is probably more likely to go to Tesco, as the small monetary gain at Aldi does not compensate for the additional walking. Now assume that one has loads of friends over one afternoon and everyone is eating jam sandwiches. Much more bread and jam are needed, say 10 times as much of both. This means that the direct cost differential is 10 times larger. Thus, the savings at Aldi may now compensate for walking six times further to shop there.
These two situations are quite simple, as it is always a decision between going to one firm or the other. In the other two situations the decision to be made is whether or not to mix consumption across both firms.
Initially, assume that firm 1 is cheaper for good 1, and firm 2 is cheaper for good 2: \(p_1^1<p_1^2\) and \(p_2^1>p_2^2\) (\(\epsilon_1>0\) and \(\epsilon_2<0\)). This implies that the cost in 7 is necessarily higher than the cost in 6, thus 7 cannot be optimal and should2 play no part in the decision-making process of the consumer. This means that the consumer is really choosing between shopping only at firm 1 4 or 2 5 or buying good 1 at firm 1 and good 2 at firm 2 6.
In essence, this is a decision between cost-minimising prices with higher time costs 6 and the minimum time costs at higher prices 1 or 2. Because of this, only whichever of equations 1 and 2 imply the least total cost needs to be considered. To this end, assume (without loss of generality) that shopping entirely at firm 1 is strictly preferred over shopping entirely at firm 2. Using the results from 9, this implies that \(2(\theta^1-\theta^2 )<\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2\).
Subtracting the firm 1 consumption cost 4 from the mixed consumption cost 6 gives:
\[ \Delta C=C(\bar{x_1}, 0)-C(\bar{x_1}, \bar{x_2})=\bar{x_2}\epsilon_2-\theta^1+\theta^2+s+\phi \tag{10}\]
\[ \Delta C \gtreqless0\Leftrightarrow(\theta^2+s+\phi)-\theta^1\gtreqless-\bar{x_2}\epsilon_2 \tag{11}\]
The intuition behind 11 is similar to that for 9, comparing direct cost savings (\(-\bar{x_2}\epsilon_2\)) against the extra time cost [$(2+s+)-1 $] of going to both firms. A useful alternative to 11 is 12:
\[ \Delta C \gtreqless0\Leftrightarrow \bar{x_2}p_2^2+\theta^2+s+\phi\gtreqless\bar{x_2}p_2^1+\theta^1 \tag{12}\]
This equation states that for the consumer to go to both firms (\(\Delta C<0\)) the cost of buying good 2 at firm 1 (\(\bar{x_2}p_2^1\)) plus the cost of returning home (\(\theta^1\)) must exceed the cost of going to firm 2 (\(\phi+s\)), buying the good there (\(\bar{x_2}p_2^1\)) and returning home (\(\theta^2\)). Note that the cost of getting to firm 1 and buying good 1 (\(\bar{x_1}p_1^1+\theta^1+s\)) has no effect in the decision as it is common in both costs. If the consumer was making this decision whilst at firm 1, \(\bar{x_1}p_1^1+\theta^1+s\) is a sunk cost, so they should only consider minimising future costs they may incur.
The assumption that buying both goods at firm 1 was cheaper than at firm 2 changes the solution minimally: \(\Delta C=-\bar{x_1}\epsilon_1+\theta^1-\theta^2+s+\phi\), with the same intuition as before. In fact, if the prices have this asymmetrical property, the consumer is guaranteed to go to the firm where the combined expenditure of buying both goods is lowest, the question is then whether it is beneficial to also go to the other firm.
This final observation is important as it implies time-consistency: the timing of the decision has no effect on the outcome. As will be shown in section 3, the implication of time-consistency is uniquely determined by linear preferences in time [\(C_T (x_1^1,x_2^1)=t\)].
2.1 Graphing the Model
As is common in economics, it is preferable to visualise the model in order to provide better explanation and additional intuition. Luckily, this model can be graphed quite easily using the concept of indifference. Indifference in this model is whenever the difference in total costs is zero. For example, if the sum of the direct costs and the time costs for only going to firm 1 is equal to the equivalent sum for only going to firm 2, then the consumer will be indifferent between only going to firm 1 and only going to firm 2, as they would incur exactly the same total cost. This means that for every firm-choice the consumer can make we can plot an indifference curve.
As both the times and prices are exogenously determined it is not clear which variables should be placed on the axes, and which should therefore be intercepts. One could assume that prices vary more than the times, as the distances between the consumer’s house and the firms are unlikely to change. On the other hand, changes in weather, heavy traffic, and disruptions to public transport etc, are likely to cause travelling times to change over the course of the day, and from one day to the next. Despite this, the direct costs have been placed on the axes, with the time costs as intercepts. This is because the model is based on cost differences, and as changes in travel times to each firm are likely positively correlated, these frequent changes in travel times should cancel3. On the x-axis we put \(\bar{x_1}\epsilon_1 = \bar{x_1}(p_1^2-p_1^1)\) which is how much more expensive firm 2 is than firm 1 for good 1. And, on the y-axis we similarly put \(\bar{x_2}\epsilon_2 =\bar{x_2} (p_2^2-p_2^1 )\), which is how much more expensive firm 2 is than firm 1 for good 2.
For illustrative purposes, it will be assumed throughout the rest of the paper that \(\theta^1>\theta^2\)4. Figure 1 shows two representations of the time information.
On the left (a), we have a simple diagram showing the times taken to travel between the 3 locations the consumer will consider: Home; Firm 1; and Firm 2. Firstly, notice that the edge between Home and Firm 1 is longer than the edge between Home and Firm 2, as \(\theta^1>\theta^2\). Nothing is assumed about the time between firms, \(\phi\), relative to \(\theta^1\) and \(\theta^2\). \(\phi\) could be larger than both \(\theta^1\) and \(\theta^2\), larger than \(\theta^2\) but smaller than \(\theta^1\), or smaller than both \(\theta^1\) and \(\theta^2\). Secondly, as (a) will always be depicted as a triangle, these times will satisfy the triangle inequality5: \(\theta^1≤\theta^2+\phi\), \(\theta^2≤\theta^1+\phi\) and \(\phi≤\theta^2+\theta^1\). These equations will be referenced later for proving whether indifference curves are positive or negative.
On the right (b), all the times have been collected into a network, representing the consumer’s possible routes from home and back to one or both firms. The shopping times have been included prior to arriving at a firm on the assumption that it cannot be optimal to travel to a firm if they do not intend to shop there. This means that every time the consumer decides whether to go to a firm, they consider both the travel time and the extra shopping time.
Evidently, from figure 1, the shortest route is to firm 2 only, which means that for the consumer to be indifferent between going only to firm 1 or only to firm 2, they must be compensated with lower prices in at least one good at firm 1. Recall that the condition for firm 1 to be preferred is \(2(\theta^1-\theta^2)<\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2\). It follows that the consumer is indifferent when \(2(\theta^1-\theta^2 )=\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2\). Rearranging yields the indifference curve:
\[ \bar{x_2}\epsilon_2=2(\theta^1-\theta^2)-\bar{x_1}\epsilon_1 \tag{13}\]
Code
.plot({
Ploty: {
label: '',
line: false,
domain: [-0.25, 11.25],
ticks: 0,
,
}x: {
label: '',
line: false,
domain: [-0.25, 11.25],
ticks: 0,
,
}marks: [
.line([{x: 0, y:11}, {x:11, y:0}], {x:'x', y:'y', stroke: "black"}),
Plot
.arrow([{x1:4, x2: 4, y1: 4, y2: 11.25}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot.arrow([{x1:4, x2: 4, y1: 4, y2: -0.25}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot.arrow([{x1:4, x2: 11.25, y1: 4, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot.arrow([{x1:4, x2: -0.25, y1: 4, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot
.text([[4, 11.25]], {text: ['x̄₂ε₂'], fill: "black", fontSize: 16, dx: -25}),
Plot.text([[11.25, 4]], {text: ['x̄₁ε₁'], fill: "black", fontSize: 16, dy: 15}),
Plot
.areaY([{x: 0, y:11, z:'limegreen'}, {x:11, y:0, z:'limegreen'}, {x:0, y:0, z:'orange'}, {x:11, y:11, z:'orange'}], {x:'x', y:'y', z:'z', fill: "z", fillOpacity: 0.5}),
Plot
.rect([{x1:1.5, x2: 2.5, y1: 1.75, y2: 2.25}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[2, 2]], {text: ['ΔC>0'], fill: "limegreen", fontSize: 16}),
Plot
.rect([{x1:7, x2: 8, y1: 7.25, y2: 7.75}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[7.5, 7.5]], {text: ['ΔC<0'], fill: "orange", fontSize: 16}),
Plot
.rect([{x1:6.5, x2: 7.5, y1: 1, y2: 1.5}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[7, 1.25]], {text: ['ΔC=0'], fill: "black", fontSize: 16}),
Plot.line([{x: 7.5, y:1.5}, {x:8.5, y:2.5}], {x:'x', y:'y', stroke: "black", strokeWidth: 0.5}),
Plot
.text([[3.3, 7]], {text: ['2(θ¹-θ²)'], fill: 'black', fontSize: 16}),
Plot.text([[7, 3.75]], {text: ['2(θ¹-θ²)'], fill: 'black', fontSize: 16}),
Plot,
]width: width,
height: width
})
Only Buy from Firm 1 | Only Buy from Firm 2 |
Equation 13 can be plotted in figure 2 to illustrate the consumer’s problem. Here, the difference in costs is defined as the cost of shopping entirely at firm 1 minus the cost of shopping entirely at firm 2:
\[ \Delta C=C(\bar{x_1}, \bar{x_2})-C(0, 0)=-(\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2)+2(\theta^1-\theta^2) \tag{14}\]
This implies that if the consumer finds themselves anywhere in the shaded yellow section (above the indifference curve and where \(\Delta C<0\)), then it is cheaper to consume both goods at firm 1, instead of at firm 2. In the green area (below the indifference curve and where \(\Delta C>0\)), it is cheaper to buy both goods at firm 2. Thus, in the yellow the consumer only shops at firm 1, and in the green they only shop at firm 2. Clearly, the consumer’s decision cannot be known with certainty if they lie on the indifference curve, but, as economists like to do, assume they pick at random, choosing each, on average, half the time.
Next, consider the option of mixing consumption over both firms. One known condition about mixing consumption is that both firms must have a lower price in one good. This means that either \(\epsilon_1>0\) and \(\epsilon_2<0\) (south-east quadrant) or \(\epsilon_1<0\) and \(\epsilon_2>0\) (north-west quadrant). Start with the south-east quadrant of the graph. As was previously mentioned, only the mixed cost and the lowest cost of only going to one firm need to be compared. This means that there are two possibilities to consider: firm 1 is cheaper; or firm 2 is cheaper. First, assume that firm 1 is cheaper; this means that \(2(\theta^1-\theta^2 )<\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2\), lying somewhere in the yellow area. The difference in cost is:
\[ \Delta \hat{C^1}=C(\bar{x_1}, 0)-C(\bar{x_1}, \bar{x_2})=\bar{x_2}\epsilon_2-\theta^1+\theta^2+s+\phi \tag{15}\]
Notice that the hat added to the C, as to differentiate it from 14, and the added superscripts to differentiate this cost from the next, where firm 2 is the cheaper firm. Setting 15 equal to zero gives another indifference curve:
\[ \bar{x_2}\epsilon_2=\theta^1-\theta^2-s-\phi\quad\text{if}\quad2(\theta^1-\theta^2)\lt\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2 \tag{16}\]
It can be proven that \(\bar{x_2}\epsilon_2\) is negative here by some simple logic: The time cost of getting from firm 1 directly back home (\(\theta^1\)) cannot be larger than the time cost of going home from firm 1 via firm 2 (\(\theta^2+\phi\)), therefore \(\theta^1-(\theta^2+\phi)<0\). The triangle inequality rule can also be used, which states that \(\theta^1≤\theta^2+\phi\). Thus, subtracting s from the left-hand side means that the inequality is strict 6. This is important as it supports the assumption that \(\epsilon_2<0\).
Now assume the other case, where firm 2 is cheaper, thus the mixed cost is compared to the cost of shopping entirely at firm 2:
\[ \Delta \hat{C^2}=C(\bar{x_1}, 0)-C(0, 0)=-\bar{x_1}\epsilon_1+\theta^1-\theta^2+s+\phi \tag{17}\]
Setting this equal to zero again yields the other segment of the indifference curve:
\[ \bar{x_1}\epsilon_1=\theta^1-\theta^2+s+\phi\quad\text{if}\quad2(\theta^1-\theta^2)\gt\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2 \tag{18}\]
A similar logic (and the triangle rule) can be used to state that \(\theta^2<\theta^1+s+\phi\), therefore \(\bar{x_1}\epsilon_1>0\), which also supports the assumption that \(\epsilon_1>0\). Notice that if one were to add these two indifference curves together one would get the formula for the original indifference curve between consuming both goods at firm 1 or firm 2.
In the north-west quadrant, where \(\epsilon_1<0\) and \(\epsilon_2>0\), the indifference curves are now easy to derive. Using a similar method, first assume that firm 1 is the cheapest [\(2(\theta^1-\theta^2 )\lt\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2\)], thus:
\[ \Delta \tilde{C^1}=C(0, \bar{x_2})-C(\bar{x_1}, \bar{x_2})=\bar{x_1}\epsilon_1-\theta^1+\theta^2+s+\phi \tag{19}\]
Setting the cost difference equal to zero yields this indifference curve:
\[ \bar{x_1}\epsilon_1=\theta^1-\theta^2-s-\phi\quad\text{if}\quad2(\theta^1-\theta^2)\lt\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2 \tag{20}\]
Second, assume that firm 2 is cheaper [\(2(\theta^1-\theta^2 )\gt\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2\)], then:
\[ \Delta \tilde{C^2}=C(0, \bar{x_2})-C(0, 0)=\bar{x_2}\epsilon_2+\theta^1-\theta^2+s+\phi \tag{21}\]
Setting the cost difference equal to zero yields this indifference curve:
\[ \bar{x_2}\epsilon_2=\theta^1-\theta^2+s+\phi\quad\text{if}\quad2(\theta^1-\theta^2)\lt\bar{x_1}\epsilon_1+\bar{x_2}\epsilon_2 \tag{22}\]
Plotting these indifference curves with that from Figure 2 gives Figure 3.
Code
.plot({
Ploty: {
label: '',
line: false,
domain: [-0.25, 11.25],
ticks: 0,
,
}x: {
label: '',
line: false,
domain: [-0.25, 11.25],
ticks: 0,
,
}marks: [
.line([{x: 0, y:11}, {x:3, y:8}], {x:'x', y:'y', stroke: "black", strokeDasharray: '5 5'}),
Plot.line([{x: 3, y:8}, {x:8, y:3}], {x:'x', y:'y', stroke: "black"}),
Plot.line([{x: 8, y:3}, {x:11, y:0}], {x:'x', y:'y', stroke: "black", strokeDasharray: '5 5'}),
Plot
.arrow([{x1:4, x2: 4, y1: 4, y2: 11.25}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot.arrow([{x1:4, x2: 4, y1: 4, y2: -0.25}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot.arrow([{x1:4, x2: 11.25, y1: 4, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot.arrow([{x1:4, x2: -0.25, y1: 4, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot
.text([[4, 11.25]], {text: ['x̄₂ε₂'], fill: "black", fontSize: 16, dx: -25}),
Plot.text([[11.25, 4]], {text: ['x̄₁ε₁'], fill: "black", fontSize: 16, dy: 15}),
Plot
.areaY([
Plotx: 0, y:8, z:'limegreen'}, {x: 3, y:8, z:'limegreen'}, {x:8, y:3, z:'limegreen'}, {x: 8, y:0, z:'limegreen'}, {x: 11, y:0, z:'limegreen'},
{x:0, y:3, z: 'purple'}, {x:3, y:3, z: 'purple'}, {x:3, y:0, z: 'purple'}, {x:11, y:0, z: 'purple'},
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 0.5}),
{.areaY([
Plotx:0, y:0, z: 'blue', op: 0.5}, {x:8, y:0, z: 'blue', op: 0.5}, {x:8, y:3, z: 'blue', op: 0.5}, {x:11, y:3, z: 'blue', op: 0.5},
{x:3, y:8, z: 'white', op: 0}, {x:8, y:0, z: 'white', op: 0},
{x:3, y:3, z:'orange', op: 0.5}, {x:8, y:8, z:'orange', op: 0.5}, {x:11, y:8, z:'orange', op: 0.5}
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 'op'}),
{
.line([[0, 8], [3, 8]], {stroke: 'purple'}),
Plot.line([[3, 8], [3, 11]], {stroke: 'purple'}),
Plot.line([[3, 8], [4, 8]], {stroke: 'purple', strokeDasharray: '5 5'}),
Plot.line([[3, 4], [3, 8]], {stroke: 'purple', strokeDasharray: '5 5'}),
Plot
.line([[8, 3], [11, 3]], {stroke: 'blue'}),
Plot.line([[8, 3], [8, 0]], {stroke: 'blue'}),
Plot.line([[8, 3], [8, 4]], {stroke: 'blue', strokeDasharray: '5 5'}),
Plot.line([[8, 3], [4, 3]], {stroke: 'blue', strokeDasharray: '5 5'}),
Plot
.rect([{x1:1.5, x2: 2.5, y1: 1.75, y2: 2.25}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[2, 2]], {text: ['ΔC>0'], fill: "limegreen", fontSize: 16}),
Plot
.rect([{x1:7, x2: 8, y1: 7.25, y2: 7.75}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[7.5, 7.5]], {text: ['ΔC<0'], fill: "orange", fontSize: 16}),
Plot
.rect([{x1:1, x2: 2, y1: 9.75, y2: 9.25}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[1.5, 9.5]], {text: ['ΔC~<0'], fill: "purple", fontSize: 16}),
Plot
.rect([{x1:9, x2: 10, y1: 1.25, y2: 1.75}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[9.5, 1.5]], {text: ['ΔĈ<0'], fill: "blue", fontSize: 16}),
Plot
.text([[3.3, 7]], {text: ['2(θ¹-θ²)'], fill: 'black', fontSize: 16}),
Plot.text([[7, 3.75]], {text: ['2(θ¹-θ²)'], fill: 'black', fontSize: 16}),
Plot
.text([[7, 6.5]], {text: ['θ¹-θ²+s+φ'], fill: 'black', fontSize: 16}),
Plot.arrow([{x1:7, x2: 8, y1: 6.25, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'blue'}),
Plot.arrow([{x1:7, x2: 4, y1: 6.75, y2: 8}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'purple'}),
Plot
.text([[2, 3.5]], {text: ['θ¹-θ²-s-φ'], fill: 'black', fontSize: 16}),
Plot.arrow([{x1:2, x2: 4, y1: 3.25, y2: 3}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'blue'}),
Plot.arrow([{x1:2, x2: 3, y1: 3.75, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'purple'}),
Plot
,
]width: width,
height: width
})
Only Buy from Firm 1 | Only Buy from Firm 2 | Buy from Both Firms |
Notice that the indifference curves are only defined under a given interval of \(\bar{x_1}\epsilon_1\) and \(\bar{x_2}\epsilon_2\), due to the differences in which firm is assumed the lowest cost. This also gives the indifference curves their rotated ‘L’ shape. To explain why, assume that firm 1 is the cheaper overall, but only cheaper for good 1 and dearer in good 2. This must be somewhere in the south-east quadrant and in the yellow shaded region above the diagonal indifference curve (12). As explained earlier, the consumer will always go to firm 1, then they decide whether it is worthwhile to go to firm 2 also. This means that the price difference for good 1 is irrelevant, as they benefit from it either way. This is clear when one compares the costs between shopping only at firm 1 (4) and when buying good 1 at firm 1 and good 2 at firm 2 (6).
The costs in (4) and (6) have common parts: the cost of going to firm 1 and buying good 1. When the difference is taken, this cost cancels out, thus does not appear in (14). Hence, the indifference curve segment is a horizontal line at \(θ^1-θ^2-s-ϕ\). This is important, as it shows that no matter how much \(\bar{x_1}\epsilon_1\) may rise above the lower bound of the indifference curve, it will not change the difference in costs, and thus not change the decision.
The blue and purple shaded areas could be separated into two halves to show the small difference in the decisions made. In the blue area, good 1 is irrelevant to the decision in the top half, and good 2 is irrelevant in the bottom half, and in the purple area the converse is true; good 1 irrelevant below, good 2 irrelevant above.
An important property is that neither horizontal nor vertical indifference curves can intersect their perpendicular axis at zero as long as \(s>0\). This is equivalent to \(θ^1-θ^2-s-ϕ<0\) and \(θ^1-θ^2+s+ϕ>0\quad ∀\quad θ^1,θ^2,s,ϕ ∈R^{++}\). All variables here are in the set of strictly positive real numbers as they all represent times, and it would make little sense for any of them to be zero.
What has been created in figure 3 is a useful tool for predicting consumer firm-choice behaviour, given the time parameters and the price structure of the firms. It allows for easy assessment of how the choice may change if one firm lowers or raises their price for one or both goods. It also highlights the importance of location, as a shift in any one of the time parameters can have a large impact. For example, if firm 1 were to decide to relocate to a location closer to the consumer, this has the effect of shifting the indifference curves down and left. This means that the area for which the consumer goes to firm 1 is larger, hence increasing the revenue for firm 1.
3 Time Inconsistency
The concept of time-inconsistency is a thoroughly well researched phenomenon in human behaviour, with applications to behavioural economics, contract theory, and monetary policy 7. In simple terms, time-inconsistent behaviour is when an economic agent (a consumer, firm, policymaker etc.) faced with exactly the same decision at two different points in time, makes two different choices.
The concept is best explained with an example. Suppose that one has an assignment due in a weeks’ time. Now consider the proposed decision: either pay £10 to extend the deadline for an additional day; or pay nothing and the deadline is unchanged. People will tend not to pay for the extension when asked initially, when they have a week to finish the assignment. But when they are asked a day before the deadline, many; especially students; will decide to pay the £10 to get some more time. This is an example where the mere passing of time has altered the agent’s decision.
In the context of the model in this paper, time-inconsistency is a situation where the decision made before any travelling happens is different to a decision made once the consumer has incurred some travel cost. In this paper, this will be restricted to two possible points in time: before they travel; and at the first firm they intend to shop at. This means that any difference in the choices made at these two distinct times, is considered time-inconsistent behaviour.
It should be noted that time-inconsistency does not necessarily imply irrationality. One can explain the behaviour in the above example as a rational response to increasing scarcity of time as the deadline gets closer, thus the value of one extra day is higher one day before the deadline than a week before.
This final observation is extremely relevant to time-inconsistency in this paper as one will find that such behaviour in this model is a result of the changing marginal cost of time. It follows that time-inconsistent behaviour can only be present if the consumer’s disutility of time function has changing marginal cost of time 8. However, this gives no information about how the marginal cost may change, and what effect this may have. To assess this, three disutility functions are introduced: a quadratic function, a square root function, and a hyperbolic sine function (\(\sinh\)).
3.1 Quadratic and root disutility of time
Thus far, it has been assumed that the cost of time is a linear function of time [\(C_T (x_1^1,x_2^1)=t\)], which gives costs of 4, 5, 6 and 7. Firstly, assume that the cost function is simply the square of the time [\(C_T^Q (x_1^1,x_2^1)=t^2\)]. Thus, the initial costs are (subscript denotes time period):
\[ C_1^Q(\bar{x_1}, \bar{x_2}) = \bar{x_1}p_1^1+\bar{x_2}p_2^1+(2\theta^1+s)^2 \tag{23}\]
\[ C_1^Q(0, 0) = \bar{x_1}p_1^2+\bar{x_2}p_2^2+(2\theta^2+s)^2 \tag{24}\]
\[ C_1^Q(\bar{x_1}, 0) = \bar{x_1}p_1^1+\bar{x_2}p_2^2+(\theta^1+\theta^2+2s+\phi)^2 \tag{25}\]
\[ C_1^Q(0, \bar{x_2}) = \bar{x_1}p_1^2+\bar{x_2}p_2^1+(\theta^1+\theta^2+2s+\phi)^2 \tag{26}\]
The cost difference curves are found the same way as before:
- \(\Delta C_1^Q = C_1^Q(\bar{x_1}, \bar{x_2}) - C_1^Q(0, 0) = -\bar{x_1}\epsilon_1-\bar{x_2}\epsilon_2+(2\theta^1+s)^2-(2\theta^2+s)^2\)
\[ \Delta C_1^Q =0 \Rightarrow \bar{x_2}\epsilon_2 = (2\theta^1+s)^2-(2\theta^2+s)^2-\bar{x_1}\epsilon_1 \tag{27}\]
- \(\Delta \hat{C_{11}^Q} = C_1^Q(\bar{x_1}, 0) - C_1^Q(\bar{x_1}, \bar{x_2}) = \bar{x_2}\epsilon_2+(\theta^1+\theta^2+2s+\phi)^2-(2\theta^1+s)^2\)
\[ \Delta \hat{C_{11}^Q} =0 \Rightarrow \bar{x_2}\epsilon_2 = (2\theta^1+s)^2-(\theta^1+\theta^2+2s+\phi)^2 \tag{28}\]
- \(\Delta \hat{C_{12}^Q} = C_1^Q(\bar{x_1}, 0) - C_1^Q(0, 0) = -\bar{x_1}\epsilon_1+(\theta^1+\theta^2+2s+\phi)^2-(2\theta^2+s)^2\)
\[ \Delta \hat{C_{12}^Q} =0 \Rightarrow \bar{x_1}\epsilon_1 = (\theta^1+\theta^2+2s+\phi)^2 - (2\theta^2+s)^2 \tag{29}\]
- \(\Delta \tilde{C_{11}^Q} = C_1^Q(0, \bar{x_2}) - C_1^Q(\bar{x_1}, \bar{x_2}) = \bar{x_1}\epsilon_1+(\theta^1+\theta^2+2s+\phi)^2-(2\theta^1+s)^2\)
\[ \Delta \tilde{C_{11}^Q} =0 \Rightarrow \bar{x_1}\epsilon_1 = (2\theta^1+s)^2-(\theta^1+\theta^2+2s+\phi)^2 \tag{30}\]
- \(\Delta \tilde{C_{12}^Q} = C_1^Q(0, \bar{x_2}) - C_1^Q(0, 0) = -\bar{x_2}\epsilon_2+(\theta^1+\theta^2+2s+\phi)^2-(2\theta^2+s)^2\)
\[ \Delta \tilde{C_{12}^Q} =0 \Rightarrow \bar{x_2}\epsilon_2 = (\theta^1+\theta^2+2s+\phi)^2 - (2\theta^2+s)^2 \tag{31}\]
These equations are similar to the linear case, but they have been scaled to reflect the quadratic nature of the time disutility function. As time-inconsistency is of main concern, the indifference curves need to be calculated in the second period; that being after the consumer has shopped at their first-choice firm. Note that if one firm is cheaper for both goods, then once at that firm, there is no incentive to go to the other one, which rules out time-inconsistency in the north-east and south-west quadrants. Thus, in the second period there are only 4 possible cases:
- \(\epsilon_1\gt0, \epsilon_2\lt0\) and firm 1 visited first
- \(\epsilon_1\gt0, \epsilon_2\lt0\) and firm 2 visited first
- \(\epsilon_1\lt0, \epsilon_2\gt0\) and firm 1 visited first
- \(\epsilon_1\lt0, \epsilon_2\gt0\) and firm 2 visited first
Start with the first 2 cases, as they are in the same quadrant.
- Went to firm 1 first, so we assume that they have already bought good 1, as it is the good for which firm 1 is cheapest. Thus, the sunk costs are \(\bar{x_1}p_1^1+\theta^1+s\). The decision is now between two costs:
- \(C_2^Q(\bar{x_1},\bar{x_2})=\bar{x_2}p_2^1+(\theta^1)^2\)
- \(C_2^Q(\bar{x_1},0)=\bar{x_2}p_2^2+(\theta^2+s+\phi)^2\)
This then gives a cost difference of (subscripts are period then first firm):
\[ \Delta \hat{C_{21}^Q} = C_2^Q(\bar{x_1},\bar{x_2})-C_2^Q(\bar{x_1},0)=-\bar{x_2}\epsilon_2+(\theta^1)^2-(\theta^2+s+\phi)^2 \]
\[ \Delta \hat{C_{21}^Q} =0 \Rightarrow \bar{x_2}\epsilon_2 = (\theta^1)^2-(\theta^2+s+\phi)^2\gt(2\theta^1+s)^2-(\theta^1+\theta^2+2s+\phi)^2 \tag{32}\]
As this is larger (absolutely smaller negative number, and due to the convexity of the utility function) than the 1st period indifference curve, there is an interval where the agent’s decisions would be time-inconsistent.
- Went to firm 2 first, so bought good 2 at firm 2, and sunk costs are \(\bar{x_2}p_2^2+\theta^2+s\).
- \(C_2^Q(0,\bar{x_2})=\bar{x_1}p_1^1+(\theta^1+s+\phi)^2\)
- \(C_2^Q(0, 0)=\bar{x_1}p_1^2+(\theta^2)^2\)
- \(∆C_{22}^Q=C_2^Q(0,0)-C_2^Q(0, \bar{x_2})=\bar{x_1}\epsilon_1+(\theta_2)^2-(\theta^1+s+\phi)^2\)
\[ \Delta \hat{C_{22}^Q} =0 \Rightarrow \bar{x_1}\epsilon_1 = (\theta^1+s+\phi)^2-(\theta^2)^2\lt(\theta^1+\theta^2+2s+\phi)^2-(2\theta^2+s)^2 \tag{33}\]
As this is smaller than the first period decision, there is an interval where the agent’s decision would be time-inconsistent also.
The other 2 cases have exactly the same outcome, with:
\[ \Delta \tilde{C_{21}^Q} =0 \Rightarrow \bar{x_1}\epsilon_1 = (\theta^1)^2-(\theta^2+s+\phi)^2\gt(2\theta^1+s)^2-(\theta^1+\theta^2+2s+\phi)^2 \tag{34}\]
\[ \Delta \tilde{C_{22}^Q} =0 \Rightarrow \bar{x_2}\epsilon_2 = (\theta^1+s+\phi)^2-(\theta^2)^2\lt(\theta^1+\theta^2+2s+\phi)^2-(2\theta^2+s)^2 \tag{35}\]
Before graphing the quadratic indifference curves, it is useful to calculate those for the root disutility function, so comparisons can be made between the graphs. Luckily, the root indifference curves can be gained by simply replacing the square with a square root, thus every time will be to the power of ½ instead of 2. This means that the root equivalent equations of 27 - 35 are:
\[ \Delta C_1^R =0 \Rightarrow \bar{x_2}\epsilon_2 = \sqrt{2\theta^1+s}-\sqrt{2\theta^2+s}2-\bar{x_1}\epsilon_1 \tag{36}\]
\[ \Delta \hat{C_{11}^R} =0 \Rightarrow \bar{x_2}\epsilon_2 = \sqrt{2\theta^1+s}-\sqrt{\theta^1+\theta^2+2s+\phi} \tag{37}\]
\[ \Delta \hat{C_{12}^R} =0 \Rightarrow \bar{x_1}\epsilon_1 = \sqrt{\theta^1+\theta^2+2s+\phi} - \sqrt{2\theta^2+s} \tag{38}\]
\[ \Delta \tilde{C_{11}^R} =0 \Rightarrow \bar{x_1}\epsilon_1 = \sqrt{2\theta^1+s}-\sqrt{\theta^1+\theta^2+2s+\phi} \tag{39}\]
\[ \Delta \tilde{C_{12}^R} =0 \Rightarrow \bar{x_2}\epsilon_2 = \sqrt{\theta^1+\theta^2+2s+\phi} - \sqrt{2\theta^2+s} \tag{40}\]
\[ \Delta \hat{C_{21}^R} =0 \Rightarrow \bar{x_2}\epsilon_2 = \sqrt{\theta^1}-\sqrt{\theta^2+s+\phi}\gt\sqrt{2\theta^1+s}-\sqrt{\theta^1+\theta^2+2s+\phi} \tag{41}\]
\[ \Delta \hat{C_{22}^R} =0 \Rightarrow \bar{x_1}\epsilon_1 = \sqrt{\theta^1+s+\phi}-\sqrt{\theta^2}\lt\sqrt{\theta^1+\theta^2+2s+\phi}-\sqrt{2\theta^2+s} \tag{42}\]
\[ \Delta \tilde{C_{21}^R} =0 \Rightarrow \bar{x_1}\epsilon_1 = \sqrt{\theta^1}-\sqrt{\theta^2+s+\phi}\gt\sqrt{2\theta^1+s}-\sqrt{\theta^1+\theta^2+2s+\phi} \tag{43}\]
\[ \Delta \tilde{C_{22}^R} =0 \Rightarrow \bar{x_2}\epsilon_2 = \sqrt{\theta^1+s+\phi}-\sqrt{\theta^2}2\lt\sqrt{\theta^1+\theta^2+2s+\phi}-\sqrt{2\theta^2+s} \tag{44}\]
Equations 27 - 35 have been plotted in Figure 4, and 36 - 44 in Figure 5.
Code
.plot({
Ploty: {
label: '',
line: false,
domain: [-0.25, 11.25],
ticks: 0,
,
}x: {
label: '',
line: false,
domain: [-0.25, 11.25],
ticks: 0,
,
}marks: [
.line([{x: 0, y:11}, {x:3, y:8}], {x:'x', y:'y', stroke: "black", strokeDasharray: '5 5'}),
Plot.line([{x: 3, y:8}, {x:8, y:3}], {x:'x', y:'y', stroke: "black"}),
Plot.line([{x: 8, y:3}, {x:11, y:0}], {x:'x', y:'y', stroke: "black", strokeDasharray: '5 5'}),
Plot
.arrow([{x1:4, x2: 4, y1: 4, y2: 11.25}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot.arrow([{x1:4, x2: 4, y1: 4, y2: -0.25}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot.arrow([{x1:4, x2: 11.25, y1: 4, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot.arrow([{x1:4, x2: -0.25, y1: 4, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot
.text([[4, 11.25]], {text: ['x̄₂ε₂'], fill: "black", fontSize: 16, dx: -25}),
Plot.text([[11.25, 4]], {text: ['x̄₁ε₁'], fill: "black", fontSize: 16, dy: 15}),
Plot
.areaY([
Plotx: 0, y:7.5, z:'limegreen'}, {x: 2, y: 7.5, z: 'green'}, {x: 3.5, y:7.5, z:'limegreen'}, {x:7.5, y:3.5, z:'limegreen'}, {x: 7.5, y:0, z:'limegreen'}, {x: 11, y:0, z:'limegreen'},
{x: 0, y: 1.5, z: 'red'}, {x: 2, y: 1.5, z: 'red'}, {x: 3.5, y: 0, z: 'red'},
{x:0, y:2, z: 'purple'}, {x:2, y:2, z: 'purple'}, {x:2, y:0, z: 'purple'}, {x:11, y:0, z: 'purple'},
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 0.5}),
{.areaY([
Plotx:2, y:9, z: 'white', op: 0}, {x:3, y:8, z: 'white', op: 0},
{x:2, y:2, z: 'red', op: 0.5}, {x:3, y:3, z: 'red', op: 0.5},
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 'op'}),
{.areaY([
Plotx:0, y:0, z: 'red', op: 0.5}, {x:7.5, y:0, z: 'red', op: 0.5}, {x:7.5, y:3.5, z: 'red', op: 0.5}, {x:8, y:3, z: 'red', op: 0.5}, {x:9, y:3, z: 'red', op: 0.5},
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 'op'}),
{.areaY([
Plotx:0, y:0, z: 'blue', op: 0.5}, {x:9, y:0, z: 'blue', op: 0.5}, {x:9, y:2, z: 'blue', op: 0.5}, {x:11, y:2, z: 'blue', op: 0.5},
{x:9, y:1, z: 'red', op: 0.5}, {x:11, y:1, z: 'red', op: 0.5},
{x:3, y:8, z: 'white', op: 0}, {x:8, y:3, z: 'white', op: 0}, {x:9, y:1, z: 'white', op: 0},
{x:3, y:3, z:'orange', op: 0.5}, {x:8, y:8, z:'orange', op: 0.5}, {x:11, y:8, z:'orange', op: 0.5}
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 'op'}),
{
.line([[0, 9], [2, 9]], {stroke: 'purple'}),
Plot.line([[2, 9], [2, 11]], {stroke: 'purple'}),
Plot.line([[2, 9], [4, 9]], {stroke: 'purple', strokeDasharray: '5 5'}),
Plot.line([[2, 4], [2, 9]], {stroke: 'purple', strokeDasharray: '5 5'}),
Plot
.line([[9, 2], [11, 2]], {stroke: 'blue'}),
Plot.line([[9, 2], [9, 0]], {stroke: 'blue'}),
Plot.line([[9, 2], [9, 4]], {stroke: 'blue', strokeDasharray: '5 5'}),
Plot.line([[9, 2], [4, 2]], {stroke: 'blue', strokeDasharray: '5 5'}),
Plot
.line([[0, 7.5], [3.5, 7.5]], {stroke: 'red'}),
Plot.line([[3, 8], [3, 11]], {stroke: 'red'}),
Plot.line([[3.5, 7.5], [4, 7.5]], {stroke: 'red', strokeDasharray: '5 5'}),
Plot.line([[3, 4], [3, 8]], {stroke: 'red', strokeDasharray: '5 5'}),
Plot
.line([[8, 3], [11, 3]], {stroke: 'red'}),
Plot.line([[7.5, 3.5], [7.5, 0]], {stroke: 'red'}),
Plot.line([[8, 3], [4, 3]], {stroke: 'red', strokeDasharray: '5 5'}),
Plot.line([[7.5, 3.5], [7.5, 4]], {stroke: 'red', strokeDasharray: '5 5'}),
Plot
.rect([{x1:0.75, x2: 1.75, y1: 1.5, y2: 2}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[1.25, 1.75]], {text: ['ΔC>0'], fill: "limegreen", fontSize: 16}),
Plot
.rect([{x1:9, x2: 10, y1: 8.25, y2: 8.75}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[9.5, 8.5]], {text: ['ΔC<0'], fill: "orange", fontSize: 16}),
Plot
.rect([{x1:0.5, x2: 1.5, y1: 10.25, y2: 9.75}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[1, 10]], {text: ['ΔC~<0'], fill: "purple", fontSize: 16}),
Plot
.rect([{x1:9.5, x2: 10.5, y1: 0.75, y2: 1.25}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[10, 1]], {text: ['ΔĈ<0'], fill: "blue", fontSize: 16}),
Plot
.text([[8, 9.5]], {text: ['(θ¹+θ²+2s+φ)²-(2θ²+s)²'], fill: 'black', fontSize: 16}),
Plot.arrow([{x1:8, x2: 9, y1: 9.25, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'blue'}),
Plot.arrow([{x1:8, x2: 4, y1: 9.25, y2: 9}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'purple'}),
Plot
.text([[1.75, 0.75]], {text: ['(2θ¹+s)²-(θ¹+θ²+2s+φ)²'], fill: 'black', fontSize: 16}),
Plot.arrow([{x1:1.75, x2: 4, y1: 1, y2: 2}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'blue'}),
Plot.arrow([{x1:1.75, x2: 2, y1: 1, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'purple'}),
Plot
.text([[1.5, 3]], {text: ['(θ¹)²-(θ²+s+φ)²'], fill: 'black', fontSize: 16}),
Plot.arrow([{x1:2.5, x2: 3, y1: 3, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'red'}),
Plot.arrow([{x1:2.5, x2: 4, y1: 3, y2: 3}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'red'}),
Plot
.text([[7, 6]], {text: ['(θ¹+s+φ)²-(θ²)²-'], fill: 'black', fontSize: 16}),
Plot.arrow([{x1:7, x2: 4, y1: 6.25, y2: 7.5}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'red'}),
Plot.arrow([{x1:7, x2: 7.5, y1: 5.75, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'red'}),
Plot
,
]width: width,
height: width
})
Only Buy from Firm 1 | Only Buy from Firm 2 | Buy from Both Firms | Time-Inconsistency |
Code
.plot({
Ploty: {
label: '',
line: false,
domain: [-0.25, 11.25],
ticks: 0,
,
}x: {
label: '',
line: false,
domain: [-0.25, 11.25],
ticks: 0,
,
}marks: [
.line([{x: 0, y:11}, {x:3, y:8}], {x:'x', y:'y', stroke: "black", strokeDasharray: '5 5'}),
Plot.line([{x: 3, y:8}, {x:8, y:3}], {x:'x', y:'y', stroke: "black"}),
Plot.line([{x: 8, y:3}, {x:11, y:0}], {x:'x', y:'y', stroke: "black", strokeDasharray: '5 5'}),
Plot
.arrow([{x1:4, x2: 4, y1: 4, y2: 11.25}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot.arrow([{x1:4, x2: 4, y1: 4, y2: -0.25}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot.arrow([{x1:4, x2: 11.25, y1: 4, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot.arrow([{x1:4, x2: -0.25, y1: 4, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot
.text([[4, 11.25]], {text: ['x̄₂ε₂'], fill: "black", fontSize: 16, dx: -25}),
Plot.text([[11.25, 4]], {text: ['x̄₁ε₁'], fill: "black", fontSize: 16, dy: 15}),
Plot
.areaY([
Plotx: 0, y:8, z:'limegreen'}, {x: 2, y: 8, z: 'limegreen'}, {x: 2.5, y: 8, z: 'limegreen'}, {x: 3, y:8, z:'limegreen'}, {x:8, y:3, z:'limegreen'}, {x: 8, y:0, z:'limegreen'}, {x: 11, y:0, z:'limegreen'},
{x: 0, y: 1, z: 'red'}, {x: 2, y: 1, z: 'red'}, {x: 2.5, y: 0.5, z: 'red'}, {x: 3, y: 0, z: 'red'},
{x:0, y:2, z: 'purple'}, {x:2, y:2, z: 'purple'}, {x:2.5, y:2.5, z: 'purple'}
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 0.5}),
{.areaY([
Plotx:2, y:9, z: 'white', op: 0}, {x:2.5, y:8.5, z: 'white', op: 0}, {x:3, y:8, z: 'white', op: 0},
{x:2.5, y:2.5, z: 'red', op: 0.5}, {x:3, y:3, z: 'red', op: 0.5},
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 'op'}),
{.areaY([
Plotx:8, y:3, z: 'red', op: 0.5}, {x:8.5, y:2.5, z: 'red', op: 0.5}, {x:9, y:2, z: 'red', op: 0.5},
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 'op'}),
{.areaY([
Plotx:9, y:2, z: 'blue', op: 0.5}, {x:11, y:0, z: 'blue', op: 0.5},
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 'op'}),
{.areaY([
Plotx:3, y:8, z: 'white', op: 0}, {x:8, y:3, z: 'white', op: 0}, {x:8.5, y:2.5, z: 'white', op: 0}, {x:9, y:2, z: 'white', op: 0},
{x:8.5, y:0, z: 'blue', op: 0.5}, {x:9, y:0.5, z: 'blue', op: 0.5}, {x:11, y:2.5, z: 'blue', op: 0.5},
{x:8, y:0, z: 'red', op: 0.5}, {x:8.5, y:0.5, z: 'red', op: 0.5}, {x:11, y:0.5, z: 'red', op: 0.5},
{x:3, y:3, z:'orange', op: 0.5}, {x:8, y:8, z:'orange', op: 0.5}, {x:11, y:8, z:'orange', op: 0.5}
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 'op'}),
{
.line([[0, 8], [3, 8]], {stroke: 'purple'}),
Plot.line([[3, 8], [3, 11]], {stroke: 'purple'}),
Plot.line([[3, 8], [4, 8]], {stroke: 'purple', strokeDasharray: '5 5'}),
Plot.line([[3, 4], [3, 8]], {stroke: 'purple', strokeDasharray: '5 5'}),
Plot
.line([[8, 3], [11, 3]], {stroke: 'blue'}),
Plot.line([[8, 3], [8, 0]], {stroke: 'blue'}),
Plot.line([[8, 3], [8, 4]], {stroke: 'blue', strokeDasharray: '5 5'}),
Plot.line([[8, 3], [4, 3]], {stroke: 'blue', strokeDasharray: '5 5'}),
Plot
.line([[0, 9], [2, 9]], {stroke: 'red'}),
Plot.line([[2.5, 8.5], [2.5, 11]], {stroke: 'red'}),
Plot.line([[2, 9], [4, 9]], {stroke: 'red', strokeDasharray: '5 5'}),
Plot.line([[2.5, 4], [2.5, 8.5]], {stroke: 'red', strokeDasharray: '5 5'}),
Plot
.line([[8.5, 2.5], [11, 2.5]], {stroke: 'red'}),
Plot.line([[9, 2], [9, 0]], {stroke: 'red'}),
Plot.line([[8.5, 2.5], [4, 2.5]], {stroke: 'red', strokeDasharray: '5 5'}),
Plot.line([[9, 2], [9, 4]], {stroke: 'red', strokeDasharray: '5 5'}),
Plot
.rect([{x1:0.75, x2: 1.75, y1: 1.5, y2: 2}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[1.25, 1.75]], {text: ['ΔC>0'], fill: "limegreen", fontSize: 16}),
Plot
.rect([{x1:9, x2: 10, y1: 8.25, y2: 8.75}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[9.5, 8.5]], {text: ['ΔC<0'], fill: "orange", fontSize: 16}),
Plot
.rect([{x1:0.5, x2: 1.5, y1: 10.25, y2: 9.75}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[1, 10]], {text: ['ΔC~<0'], fill: "purple", fontSize: 16}),
Plot
.rect([{x1:9.5, x2: 10.5, y1: 0.75, y2: 1.25}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', fill: 'white', stroke: 'black'}),
Plot.text([[10, 1]], {text: ['ΔĈ<0'], fill: "blue", fontSize: 16}),
Plot
.text([[7, 6.5]], {text: ['√(θ¹+θ²+2s+φ)-√(2θ²+s)'], fill: 'black', fontSize: 16}),
Plot.arrow([{x1:7, x2: 8, y1: 6.25, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'blue'}),
Plot.arrow([{x1:7, x2: 4, y1: 6.75, y2: 8}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'purple'}),
Plot
.text([[1.75, 3]], {text: ['√(2θ¹+s)-√(θ¹+θ²+2s+φ)'], fill: 'black', fontSize: 16}),
Plot.arrow([{x1:3, x2: 4, y1: 3.25, y2: 3}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'blue'}),
Plot.arrow([{x1:3, x2: 3, y1: 3.25, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'purple'}),
Plot
.text([[1.5, 0.75]], {text: ['√(θ¹)-√(θ²+s+φ)'], fill: 'black', fontSize: 16}),
Plot.arrow([{x1:2.5, x2: 2.5, y1: 1, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'red'}),
Plot.arrow([{x1:2.5, x2: 4, y1: 1, y2: 2.5}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'red'}),
Plot
.text([[8, 7.5]], {text: ['√(θ¹+s+φ)-√(θ²)'], fill: 'black', fontSize: 16}),
Plot.arrow([{x1:8, x2: 4, y1: 7.75, y2: 9}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'red'}),
Plot.arrow([{x1:8, x2: 9, y1: 7.25, y2: 4}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'red'}),
Plot
,
]width: width,
height: width
})
Only Buy from Firm 1 | Only Buy from Firm 2 | Buy from Both Firms | Time-Inconsistency |
In both Figure 4 and Figure 5 there are 2 distinct sets of \(\left(\bar{x_1}\epsilon_1,\ \bar{x_2}\epsilon_2\right)\) pairs where the model predicts that the consumer will make a time-inconsistent decision. Concentrate on the north-west quadrant. In Figure 4, the red shaded area has encroached into both the yellow and green areas but not the purple. This means that time-inconsistent behaviour can only be of the form where the consumer plans to go to only one firm, but reneges and goes to both. In Figure 5, the contrary is true: the red shaded area encroaches on the purple. This means that the consumer will plan to go to both, but then renege at the first firm and not travel to the other. The same can be said about the time-inconsistency in the south-east quadrants, as both figures are symmetrical around the line \(\bar{x_2}\epsilon_2=\bar{x_1}\epsilon_1\).
Both the quadratic and root disutility functions exhibit time-inconsistent behaviour, but Figure 4 and Figure 5 highlight how this behaviour can come in different forms. In this model there are only two simple forms: travel-loving, where the consumer will travel further than originally planned (Figure 4); and travel-averse, where the consumer travels less than planned (Figure 5). It follows that the form of time-inconsistency depends on whether the disutility function is convex or concave.
The intuition behind this difference in behaviour lies in how the gradient of the disutility functions change between the 1st period, and in the 2nd period, after the 1st period costs are sunk. Take equations 30 and 34, which are the 1st and 2nd period vertical indifference curves in the north-west quadrant in Figure 4. With quadratic disutility of time the consumer is one who does not mind short journeys but increasingly dislikes travelling as they have to travel further. This means that initially, when the travel time is at its largest, any difference in travel time between going to firm 1 and going to both firms \(\left(\theta^2+s+\phi-\theta^1\right)\) will have a large effect on the consumer’s welfare. But, in the 2nd period they have incurred some travel time \(\left(\theta^1+s\right)\) so both future travel times are smaller. It must be then that the exact same difference in time has a smaller effect on welfare, as the consumer is less disliking of both travel costs. This means that the consumer needs to be compensated more at firm 1 in order to not travel more than planned. As \(\epsilon_1=p_1^2-p_1^1\), to be compensated more at firm 1 \(\bar{x_1}\epsilon_1\) needs to be larger. As \(\bar{x_1}\epsilon_1\) here is negative, it needs to be smaller in absolute value, which gives the interval for \(\bar{x_1}\epsilon_1\) where the consumer’s choices will be time-inconsistent.
On the other hand, the root disutility function has the opposite intuition: the consumer relatively hates short journeys, but every extra minute of travelling does not make them that much worse off. Think of the consumer as someone who hates having to leave the house for anything, but once out, does not mind travelling a little further. It should be quite easy to see how this type of consumer is likely to plan to go to both firms but renege to only one firm (the 1st and 2nd period vertical indifference curves in the north-west quadrant in Figure 5). Initially both costs are high 39, so the difference between the two has minimal effect: the cost saving at firm 2 only needs to be small, so \(\bar{x_1}\epsilon_1\) needs to be small in absolute value. After they travel to firm 1, both costs fall by \(\theta^1+s\) 43, meaning that the difference between the two will have more of an impact, as the consumer will be relatively more averse to the extra travel. This means that the consumer needs to be compensated more at firm 2 for the extra travel, thus \(\bar{x_1}\epsilon_1\) needs to be even smaller, or absolutely larger. This leads to the interval for \(\bar{x_1}\epsilon_1\) where the consumer reneges on going to both firms, and solely shops at firm 1.
In this section, two specific functions have been used, the square which is strictly convex, and the square root which is strictly concave. It follows that the intuition and the form of the time-inconsistency for the square function is exactly the same as any strictly convex disutility function, and similarly for the square root function and any strictly concave disutility function. This is assuming that the disutility function is both strictly increasing and passes through the origin. A proof of this can be found in the appendix (Proposition 1), but the explanations above provide sufficient evidence that the convexity or concavity of the disutility function is the only cause of the time-inconsistency.
3.2 Disutility functions with multiple forms of time-inconsistency
It is entirely possible that the agent’s disutility may not be solely convex, linear or concave, but may in fact show any of these for different values of time cost. As the function is assumed to be strictly increasing in time cost, then any quasi-concave function may display changing time-inconsistent behaviour.
A useful quasi-concave function is the hyperbolic sine function, as the point of inflection is at zero, thus a t axis translation of the function is all that is needed to ensure that the point of inflection is at a strictly positive value of \(t\). This shift of the curve does lead to a negative disutility axis intercept, so the function must be translated up the disutility axis to ensure this to be zero. The function is then generalized with a scalar factor, \(b\).
These three disutility functions and scaled square and square root functions are all shown in figure 6 9.
Code
{const root_funct = function (x, d) {
return Math.sqrt(d * x)
}const quad_funct = function (x, d) {
return Math.pow(x, 2) / d
}const sinh_funct = function (x, a, b) {
return b * (Math.sinh(x-a)+Math.sinh(a))
}const asinh_funct = function (x, a, b) {
return a + Math.asinh(x/b - Math.sinh(a))
}let a = 2
let b = 2 / Math.sinh(2)
let d = 4
let root_disutil = []
let quad_disutil = []
let sinh_disutil = []
let asinh_disutil = []
for (let x=0; x<=5;x=x+0.01) {
.push({"x": x, "y": root_funct(x, d)});
root_disutil.push({"x": x, "y": quad_funct(x, d)});
quad_disutil.push({"x": x, "y": sinh_funct(x, a, b)});
sinh_disutil.push({"x": x, "y": asinh_funct(x, a, b)});
asinh_disutil
}
const disutil_funct = Plot.plot({
color: {
legend: true,
domain: ["Linear", "Root", "Quadratic", "Sinh", "Asinh"],
range: ["blue", "turquoise", "green", "orange", "red"],
,
}y: {
label: 'C_T',
domain: [0, 5],
axis: true,
,
}x: {
label: 't',
domain: [0, 5],
axis: true,
,
}grid: true,
width: width,
marks: [
.line([[0, 0], [5, 5]], {stroke: "blue"}),
Plot.line(root_disutil, {x: 'x', y: 'y', stroke: 'turquoise'}),
Plot.line(quad_disutil, {x: 'x', y: 'y', stroke: 'green'}),
Plot.line(sinh_disutil, {x: 'x', y: 'y', stroke: 'orange'}),
Plot.line(asinh_disutil, {x: 'x', y: 'y', stroke: 'red'}),
Plot
]
})return disutil_funct
}
- Linear: \(C-T=f(t)=t\)
- Root (Concave): \(C_T=f(t)=\sqrt{dt}\)
- Quadratic (Convex): \(C_T=f(t)=t^2/d\)
- Sinh (Quasi-Concave): \(C_T=f(t)=b[\sinh(t-a)+\sinh(a)]\)
- Asinh (Quasi-Concave): \(C_T=f(t)=a+\sinh^{-1}(\frac{t}{b}-\sinh(a))\)
The hyperbolic sine function above has first and second derivatives of:
- \(f^{'}(t)=b\cosh(t-a)\)
- \(f^{''}(t)=b\sinh(t-a)\)
This means that for all strictly positive values of \(a\), the turning point of the sinh disutility function is at \(t=a\). This means that theory predicts that the consumer would exhibit behaviour consistent with travel-averse time-inconsistency for all \(t\in\left(0,a\right)\), travel-loving time-inconsistency for all \(t\in\left(a,\infty\right)\), and no time-inconsistency for \(t=a\).
The inverse function is more complex, as the derivatives are not as simple:
- \(f^{'}(t)=\frac{1}{b}\bigg[\bigg(\frac{1}{b}t-\sinh(a)\bigg)^2+1\bigg]^{-1/2}\)
- \(f^{''}(t)=\frac{t/b-\sinh(a)}{b^2}\bigg[\bigg(\frac{1}{b}t-\sinh(a)\bigg)^2+1\bigg]^{-3/2}\)
This implies that the point of inflection is at \(t=b\sinh{\left(a\right)}\). In figure Figure 6, both points of inflection are at \(t=2\), which is also an intersection point of the curves.
Of the two quasi-concave functions, the sinh function is the more likely to reflect the truth, as it echoes the physical restrictions on travel that humans have. For this reason, only the sinh disutility function is used from now on. It is an interesting function, as it encompasses the unwillingness to start travelling but the increasing willingness to travel a little further once out (with the concave section) and the unwillingness to travel long distances (with the convex section). This last point is why the sinh function provides an improvement to concave functions, as it provides an extra dimension of intuition.
3.3 Quasi-concave disutility and the cost-indifference diagram
One may notice that for strictly concave and strictly convex disutility functions only one form of time-inconsistency can occur. This may not be the case for quasi-concave disutility functions, and definitely not for the sinh function. This means that for small travel times one would expect only travel-averse time-inconsistency, and for large travel times, only travel-loving time-inconsistency. But for some travel times, one may get contrasting forms of time-inconsistency on each axis.
In addition, in Figure 4 and Figure 5 the intervals over which behaviour may be time-inconsistent are not the same for both axes. The absolute difference between the intersections on the positive intervals is larger than that on the negative. In the north-west quadrant this means that the absolute difference in the indifference curves on the \(\bar{x_2}\epsilon_2\) axis is larger than the absolute difference on the \(\bar{x_1}\epsilon_1\) axis.
This is due to two reasons: the assumption that \(\theta^1\gt\theta^2\) (if they were equal, then the equation holds with equality); and because the disutility functions are strictly concave and strictly convex. This observation does not always hold with quasi-concave disutility functions.
To show how the square, square root and sinh disutility functions effect the time-inconsistency as the travel times increase, introduce two equations for the difference in the 1st and 2nd period indifference curves for both axes in the north-west quadrant. On the \(\bar{x_1}\epsilon_1\) axis the 1st period indifference curve is subtracted from the 2nd period indifference curve:
\[ g(\mathbf{x})=[f(\theta^2+s+\phi)-f(\theta^1)]-[f(\theta^1+\theta^2+2s+\phi)-f(2\theta^1+s)] \tag{45}\]
but on the \(\bar{x_2}\epsilon_2\) axis the opposite subtraction is performed:
\[ h(\mathbf{x})=[f(\theta^1+s+\phi)-f(\theta^2)]-[f(\theta^1+\theta^2+2s+\phi)-f(2\theta^2+s)] \tag{46}\]
where \(\mathbf{x}\) is a vector of all the time cost variables and \(f\) is some increasing disutility function with \(f(0)=0\). The difference in calculation may seem odd at first but it ensures that for both the square and square root functions the signs of the \(g\) and \(h\) functions are the same. Thus, if \(f\) is concave, then one would expect both functions to be positive; if \(f\) is convex then both should be negative; and for the sinh function both will have positive and negative sections.
For simplicity, it is convenient to assume some fixed ratio between all of the costs, and then express this function in terms of only one term. For example, it may be reasonable to assume that \(\theta^2=\frac{3}{4}\theta^1\) and \(s=\phi=\frac{1}{2}\theta^1\). If \(\theta^1=1\) hour then \(\theta^2=45\) mins and \(s=t=30\) mins, which could easily be a real-world scenario. With these ratios, the \(g\) and \(h\) functions are:
\[ g(\theta^1)=\bigg[f\bigg(\frac{7}{4}\theta^1\bigg)-f(\theta^1)\bigg]-\bigg[f\bigg(\frac{13}{4}\theta^1\bigg)-f\bigg(\frac{10}{4}\theta^1\bigg)\bigg] \tag{47}\]
\[ h(\theta^1)=\bigg[f(2\theta^1)-f(\frac{3}{4}\theta^1)\bigg]-\bigg[f\bigg(\frac{13}{4}\theta^1\bigg)-f(2\theta^1)\bigg] \tag{48}\]
These functions are plotted for all three disutility functions, and for increasing \(\theta^1\), in Figure 7, Figure 8 and Figure 9.
Code
{const g_quad_funct = function (x) {
return Math.pow(7 * x / 4, 2) - Math.pow(x, 2) - Math.pow(13 * x / 4, 2) + Math.pow(10 * x /4, 2)
}const h_quad_funct = function (x) {
return Math.pow(2 * x, 2) - Math.pow(3 * x / 4, 2) - Math.pow(13 * x / 4, 2) + Math.pow(2 * x, 2)
}
let g_quad_disutil = []
let h_quad_disutil = []
for (let x=0; x<=2;x=x+0.01) {
.push({"x": x, "y": g_quad_funct(x)});
g_quad_disutil.push({"x": x, "y": h_quad_funct(x)});
h_quad_disutil
}
const quad_disutil_funct = Plot.plot({
color: {
legend: true,
domain: ["g", "h"],
range: ["green", "turquoise"],
,
}y: {
label: 'u',
domain: [-14, 0],
axis: true,
,
}x: {
label: 'θ¹',
domain: [0, 2],
axis: true,
,
}grid: true,
width: width,
marks: [
.line(g_quad_disutil, {x: 'x', y: 'y', stroke: 'green'}),
Plot.line(h_quad_disutil, {x: 'x', y: 'y', stroke: 'turquoise'}),
Plot
]
})return quad_disutil_funct
}
Code
{const g_root_funct = function (x) {
return Math.sqrt(7 * x / 4) - Math.sqrt(x) - Math.sqrt(13 * x / 4) + Math.sqrt(10 * x /4)
}const h_root_funct = function (x) {
return Math.sqrt(2 * x) - Math.sqrt(3 * x / 4) - Math.sqrt(13 * x / 4) + Math.sqrt(2 * x)
}
let g_root_disutil = []
let h_root_disutil = []
for (let x=0; x<=2;x=x+0.01) {
.push({"x": x, "y": g_root_funct(x)});
g_root_disutil.push({"x": x, "y": h_root_funct(x)});
h_root_disutil
}
const root_disutil_funct = Plot.plot({
color: {
legend: true,
domain: ["g", "h"],
range: ["green", "turquoise"],
,
}y: {
label: 'u',
domain: [0, 0.25],
axis: true,
,
}x: {
label: 'θ¹',
domain: [0, 2],
axis: true,
,
}grid: true,
width: width,
marks: [
.line(g_root_disutil, {x: 'x', y: 'y', stroke: 'green'}),
Plot.line(h_root_disutil, {x: 'x', y: 'y', stroke: 'turquoise'}),
Plot
]
})return root_disutil_funct
}
Code
{const g_sinh_funct = function (x) {
return b * (Math.sinh(7 * x / 4 - a) - Math.sinh(x - a) - Math.sinh(13 * x / 4 - a) + Math.sinh(10 * x /4 - a))
}const h_sinh_funct = function (x) {
return b * (Math.sinh(2 * x - a) - Math.sinh(3 * x / 4 - a) - Math.sinh(13 * x / 4 - a) + Math.sinh(2 * x - a))
}let a = 2
let b = 2 / Math.sinh(2)
let g_sinh_disutil = []
let h_sinh_disutil = []
for (let x=0; x<=1.5;x=x+0.01) {
.push({"x": x, "y": g_sinh_funct(x, a, b)});
g_sinh_disutil.push({"x": x, "y": h_sinh_funct(x, a, b)});
h_sinh_disutil
}
const sinh_disutil_funct = Plot.plot({
color: {
legend: true,
domain: ["g", "h"],
range: ["green", "turquoise"],
,
}y: {
label: 'u',
domain: [-3.5, 0.5],
axis: true,
,
}x: {
label: 'θ¹',
domain: [0, 1.5],
axis: true,
,
}grid: true,
width: width,
marks: [
.line(g_sinh_disutil, {x: 'x', y: 'y', stroke: 'green'}),
Plot.line(h_sinh_disutil, {x: 'x', y: 'y', stroke: 'turquoise'}),
Plot.ruleY([[0]]),
Plot.line([[0.75, 0], [0.75, -0.1]], {stroke: 'red'}),
Plot.text([[0.75, -0.2]], {text: ['0.75'], fill: 'red'}),
Plot.line([[0.97, 0], [0.97, -0.1]], {stroke: 'red'}),
Plot.text([[0.97, -0.2]], {text: ['0.97'], fill: 'red'}),
Plot.line([[1.1, 0], [1.1, -0.1]], {stroke: 'red'}),
Plot.text([[1.1, -0.2]], {text: ['1.1'], fill: 'red'}),
Plot.line([[1.3, 0], [1.3, -0.1]], {stroke: 'red'}),
Plot.text([[1.3, -0.2]], {text: ['1.3'], fill: 'red'}),
Plot
]
})return sinh_disutil_funct
}
Focussing on Figure 7 and Figure 8, one will notice that the quadratic g and h functions are both weakly less than zero, and the square root \(g\) and \(h\) functions are both weakly greater than zero, for all \(\theta^1\in\mathbb{R}_+\). The second key observation is that the magnitude of the h function is larger than that of the g function at all points. As discussed previously, this is because \(\theta^1\) is larger than \(\theta^2\), and both disutility functions are strictly concave or strictly convex. These two points merely cement what was previously stated.
There are three important observations to be made from Figure 9. Firstly, the functions are not identical, thus there must be intervals for which predicted behaviour is time-inconsistent. Secondly, in contrast to Figure 7 and Figure 8, both curves have a positive interval and a negative one, specifically going from positive, implying travel-averse time-inconsistency, to negative, implying travel-loving time-inconsistency. Thirdly, also contrasting with concave and convex disutility functions, neither curve is larger than the other for all positive \(\theta^1\), or alternatively there is a non-zero intersection of the \(g\) and \(h\) curves (at \(\theta^1=1.195\)), which cannot happen for concave and convex disutility functions.
To illustrate observation 3, take the 4 points on the graph where \(\theta^1=0.75\), \(0.97\), \(1.1\) and \(1.3\). For each value of \(\theta^1\), the north-west quadrant of the time-indifference curve diagram is plotted, shown in figure 10.
The implications are quite interesting. For \(\theta^1=0.75\), one should see the usual travel-averse time-inconsistency consistent with a concave disutility function: both 2nd period indifference curves are of greater absolute value than that in the 1st period, and the difference in \(\bar{x_2}\epsilon_2\) (\(h\) function) is larger than the difference in \(\bar{x_1}\epsilon_1\) (\(g\) function).
For \(\theta^1=0.97\), there is a mixture of travel-loving and travel-averse time-inconsistency as \(h\) is positive and \(g\) is negative. If the consumer plans to go to both stores but starts at firm 2 (\(\bar{x_2}\epsilon_2\) axis IC’s), then there is a chance they may renege and not go to firm 1 (travel-averse). But if the consumer was only planning to go to firm 1 (\(\bar{x_1}\epsilon_1\) axis IC’s), then there is a chance that they may then choose to also go to firm 2 (travel-loving).
As \(\theta^1\) grows past 1, both g and h functions are negative, thus only travel-loving time-inconsistent behaviour is exhibited by the consumer. This is apparent for both \(\theta^1=1.1\) and \(\theta^1=1.3\), but where they differ is in the relative magnitude of time-inconsistency. For \(\theta^1=1.1\) one can see from the interceptions of the 2nd period indifference curves with the diagonal indifference curve, that the difference between the \(\bar{x_1}\epsilon_1\) axis indifference curves is larger than the difference in the \(\bar{x_2}\epsilon_2\) axis indifference curves. As the opposite is true for \(\theta^1=1.3\), it implies that for \(\theta^1=1.1\) some of the costs lie in the concave section of the disutility function, and thus a full convex diagram is not realised until \(\theta^1\) rises further.
In this section, it has been shown that any non-linear disutility of time function implies time-inconsistency. In particular, if convex, the consumer is likely to travel further than planned; and if concave, not as far as planned. The disutility function can also incorporate both forms of time-inconsistency with a quasi-concave disutility function, such as the sinh function. In the next section, a possible weakness of the model is explored.
Code
= Inputs.range([0, 1.4], {label: tex`\theta^1`})
viewof theta_1
{const x1_indif_purple_funct = function (theta_1) {
return b * (Math.sinh(2*theta_1 + s - a) - Math.sinh(theta_1 + theta_2 + 2*s + phi - a))
}const x2_indif_purple_funct = function (theta_1) {
return b * (Math.sinh(theta_1 + theta_2 + 2*s + phi - a) - Math.sinh(2*theta_2 + s - a))
}const x1_indif_red_funct = function (theta_1) {
return b * (Math.sinh(theta_1 - a) - Math.sinh(theta_2 + s + phi - a))
}const x2_indif_red_funct = function (theta_1) {
return b * (Math.sinh(theta_1 + s + phi - a) - Math.sinh(theta_2 - a))
}const indif_black_funct = function (theta_1) {
return b * (Math.sinh(2*theta_1 + s - a) - Math.sinh(2*theta_2 + s - a))
}
let a = 2
let b = 2 / Math.sinh(2)
let theta_2 = 0.75 * theta_1
let s = 0.5 * theta_1
let phi = s
let x1_indif_purple = x1_indif_purple_funct(theta_1)
let x1_indif_red = x1_indif_red_funct(theta_1)
let x2_indif_purple = x2_indif_purple_funct(theta_1)
let x2_indif_red = x2_indif_red_funct(theta_1)
let indif_black_intercept = indif_black_funct(theta_1)
let x2_max = 3.7
let x1_min = -3
let indif_black_max = indif_black_intercept - x1_min
const sinh_indifference_curves_nw = Plot.plot({
y: {
label: '',
line: false,
domain: [0, x2_max],
ticks: 0
,
}x: {
label: '',
line: false,
domain: [x1_min, 0],
ticks: 0
,
}marks: [
.line([[x1_min, indif_black_max], [x1_indif_purple, x2_indif_purple]], {stroke: "black", strokeDasharray: '5 5'}),
Plot.line([[x1_indif_purple, x2_indif_purple], [0, indif_black_intercept]], {stroke: "black"}),
Plot
.arrow([{x1:0, x2: 0, y1: 0, y2: x2_max+0.1}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot.arrow([{x1:0, x2: x1_min-0.1, y1: 0, y2: 0}], {x1:'x1', x2:'x2', y1:'y1', y2:'y2', stroke: 'black'}),
Plot
.text([[0, x2_max+0.1]], {text: ['x̄₂ε₂'], fill: "black", fontSize: 16, dx: -25}),
Plot.text([[x1_min-0.1, 0]], {text: ['x̄₁ε₁'], fill: "black", fontSize: 16, dy: 15}),
Plot
.areaY([
Plotx: x1_min, y: Math.min(x2_indif_purple, x2_indif_red), z:'limegreen'}, {x: -Math.max(x2_indif_purple, x2_indif_red)+indif_black_intercept, y: Math.min(x2_indif_purple, x2_indif_red), z: 'limegreen'}, {x: -Math.min(x2_indif_purple, x2_indif_red)+indif_black_intercept, y: Math.min(x2_indif_purple, x2_indif_red), z: 'limegreen'}, {x: 0, y: indif_black_intercept, z: 'limegreen'},
{x: x1_min, y: Math.abs(x2_indif_purple - x2_indif_red), z: 'red'}, {x: -Math.max(x2_indif_purple, x2_indif_red)+indif_black_intercept, y: Math.abs(x2_indif_purple - x2_indif_red), z: 'red'}, {x: -Math.min(x2_indif_purple, x2_indif_red)+indif_black_intercept, y: 0, z: 'red'},
{x: x1_min, y: indif_black_max-Math.max(x2_indif_purple, x2_indif_red), z: 'purple'}, {x: -Math.max(x2_indif_purple, x2_indif_red)+indif_black_intercept, y: 0, z: 'purple'},
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 0.5}),
{.areaY([
Plotx: x1_min, y: indif_black_max, z: 'white', op: 0}, {x: Math.min(x1_indif_purple, x1_indif_red), y: indif_black_intercept-Math.min(x1_indif_purple, x1_indif_red), z: 'white', op: 0},
{x: x1_min, y: Math.max(x2_max-indif_black_max, 0), z: 'purple', op: 0.5}, {x: Math.min(x1_indif_purple, x1_indif_red), y: x2_max-indif_black_intercept + Math.min(x1_indif_purple, x1_indif_red), z: 'purple', op: 0.5},
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 'op'}),
{.areaY([
Plotx: Math.min(x1_indif_purple, x1_indif_red), y: indif_black_intercept-Math.min(x1_indif_purple, x1_indif_red), z: 'white', op: 0}, {x: Math.max(x1_indif_purple, x1_indif_red), y: indif_black_intercept-Math.max(x1_indif_purple, x1_indif_red), z: 'white', op: 0},
{x: Math.min(x1_indif_purple, x1_indif_red), y: x2_max - indif_black_intercept+Math.min(x1_indif_purple, x1_indif_red), z: 'red', op: 0.5}, {x: Math.max(x1_indif_purple, x1_indif_red), y: x2_max - indif_black_intercept+Math.max(x1_indif_purple, x1_indif_red), z: 'red', op: 0.5},
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 'op'}),
{.areaY([
Plotx: Math.max(x1_indif_purple, x1_indif_red), y: indif_black_intercept-Math.max(x1_indif_purple, x1_indif_red), z: 'white', op: 0}, {x: 0, y: indif_black_intercept, z: 'white', op: 0},
{x: Math.max(x1_indif_purple, x1_indif_red), y: x2_max - indif_black_intercept+Math.max(x1_indif_purple, x1_indif_red), z: 'orange', op: 0.5}, {x: 0, y: x2_max - indif_black_intercept, z: 'orange', op: 0.5},
{,
]x:'x', y:'y', z:'z', fill: "z", fillOpacity: 'op'}),
{
.line([[x1_min, x2_indif_purple], [x1_indif_purple, x2_indif_purple]], {stroke: 'purple'}),
Plot.line([[x1_indif_purple, x2_indif_purple], [0, x2_indif_purple]], {stroke: 'purple', strokeDasharray: '5 5'}),
Plot
.line([[x1_indif_purple, x2_indif_purple], [x1_indif_purple, x2_max]], {stroke: 'purple'}),
Plot.line([[x1_indif_purple, 0], [x1_indif_purple, x2_indif_purple]], {stroke: 'purple', strokeDasharray: '5 5'}),
Plot
.line([[x1_min, x2_indif_red], [x1_indif_red, x2_indif_red]], {stroke: 'red'}),
Plot.line([[x1_indif_red, x2_indif_red], [0, x2_indif_red]], {stroke: 'red', strokeDasharray: '5 5'}),
Plot
.line([[x1_indif_red, x2_indif_red], [x1_indif_red, x2_max]], {stroke: 'red'}),
Plot.line([[x1_indif_red, 0], [x1_indif_red, x2_indif_red]], {stroke: 'red', strokeDasharray: '5 5'}),
Plot
,
]width: width,
height: width
})return sinh_indifference_curves_nw
}
Only Buy from Firm 1 | Only Buy from Firm 2 | Buy from Both Firms | Time-Inconsistency |
4 Model critique: An example from Kahneman and Tversky
Experiments have been conducted to assess the effects of how choices are presented to agents on their decisions. In ‘The Framing of Decisions and the Psychology of Choice’, Tversky and Kahneman (1981) assess the effect of frames on peoples’ choices by conducting several experiments. They find that these frames significantly affected the decisions made, providing evidence against the theory of rational choice. The problem most pertinent to this model is problem 10, outlined below.
One group was offered the prices in parentheses, and the other offered the prices in square brackets.
‘Problem 10: Imagine that you are about to purchase a jacket for ($125) [$15], and a calculator for ($15) [$125]. The calculator salesman informs you that the calculator you wish to buy is on sale for ($10) [$120] at the other branch of the store, located 20 minutes’ drive away. Would you make the trip to the other store?’ (p. 457)
In their results, many more respondents made the extra trip to get the $5 discount when the price of the calculator was lower (68% to 29%). This contradicts rationality as the saving and the overall expenditure are both identical, so there should be no difference in the proportion that are willing to travel further to save. Instead of weighing the $5 saving against the extra travel, people ignore the price of the jacket, thus the marginal effect is much larger when the calculator price is lower. As the model in this paper is based on cost differences, it is assumed that consumers only care about the absolute difference in price and travel cost, and not about relative price differences. This means that the model currently cannot predict the behaviour seen in the Kahneman and Tversky experiments, as the two scenarios will be considered identical.
If one were to change the assumption on the utility of money, then the desired result can be achieved. Instead of assuming unit marginal utility of money, which equates the direct costs to the expenditure \(\left(C_P\left(X\right)=e\left(X\right)=\left(x_1^1p_1^1+x_2^1p_2^1+x_1^2p_1^2+x_2^2p_2^2\right)\right)\), assume some monotonically increasing expenditure cost function \(V\), where \(V(0)=0\) \(\left(C_P\left(X\right)=V\left(X\right)=V\left[x_1^1p_1^1,\ x_2^1p_2^1,\ x_1^2p_1^2,\ x_2^2p_2^2\right]\right)\). If convex, this function is essentially the same as having a concave utility function for money, where money is some fixed income minus expenditure. This is, of course, very oversimplified, as people do not gain much utility from holding money itself but from what they can do with it, such as purchasing other goods and services, now or in the future. Including all the reasons for why one may hold money would grossly clutter the model, and it may be likely that people are not thinking about these reasons either, only that they know that they prefer more money.
This expenditure cost function can then be applied to problem 10 from Kahneman and Tversky. Suppose the somewhat unrealistic disutility of direct costs function \(V\left(X\right)=v\left(x_1^1p_1^1\right)+v\left(x_2^1p_2^1\right)+v\left(x_1^2p_1^2\right)+v\left(x_2^2p_2^2\right)\), where \(v\) is increasing but strictly concave with \(v(0)=0\), then the disutilities are as follows:
- With the price of the jacket equal to $125 at both firms, and the price of the calculator at $15 at firm 1 and $10 at firm 2:
- If the consumer stays at firm 1, V(X)=v(125)+v(15)
- If the consumer goes to firm 2, V(X)=v(125)+v(10)
- Thus \(∆V1=v15-v(10)\)
- With the price of the jacket equal to $15 at both firms, and the price of the calculator at $125 at firm 1 and $120 at firm 2:
- If the consumer stays at firm 1, V(X)=v(15)+v(125)
- If the consumer goes to firm 2, V(X)=v(15)+v(120)
- Thus \(∆V2=v125-v(120)\)
As \(v\) is assumed increasing and strictly concave, it follows that \(∆V1>∆V2\). As the travel costs are the same in both scenarios \(\left(C_T=f\left(20\right)\right)\), it follows that:
\[ ∆C1=∆V1-f20>∆V2-f20=∆C2 \tag{49}\]
The two terms \(∆C1\) and \(∆C2\) are differences in total costs, thus if they are both negative then the consumer stays at firm 1 in both scenarios, and if both positive they incur the travel cost and go to firm 2 in both scenarios. As \(∆C1>∆C2\), then there must exist a function \(\hat{v}\), where \(\hat{v}\left(0\right)=0\), \({\hat{v}}^\prime\left(X\right)>0\) and \({\hat{v}}^{\prime\prime}\left(X\right)<0\), such that \(∆C1>0>∆C2\). This would mean that in scenario one the consumer goes to firm 2, but in scenario two they go to firm 1, supporting the findings in Kahneman and Tversky.
Although this seems like a positive result, it only came about because the disutility of expenditure function is assumed concave, implying a convex utility of money function. There is evidence both in support and against this notion, depending on the size of the prices Monti, Grant, and Osherson (2005). Therefore, it is unclear whether a convex utility of money function is realistic, and the efficacy of the model here is ambiguous at best.
5 Conclusion
In this paper, I have presented a theoretical justification for time-inconsistent behaviour in regard to the choices that consumers make about where to purchase goods. This allowed me to create the indifference curve diagrams presented throughout the paper, which predict where the consumer will shop for any given prices and travelling times.
I then induced time-inconsistent behaviour with the use of non-linear disutility of time functions, each of which represents an alternative intuition on how consumers value their time. I found that any non-linear disutility of time function would imply possible time-inconsistent behaviour, but that there are two discrete forms of time-inconsistency. Convex disutility of time functions lead to travel-loving time-inconsistency: traveling further than initially planned. Conversely, concave disutility of time functions lead to travel-averse time-inconsistency: not traveling as far as initially planned.
With these findings, it was important to assess the effect of a more realistic disutility function, hence the use of the quasi-concave hyperbolic sine function. The result of this is a consumer that exhibits primarily travel-averse time-inconsistency at lower travel times, and travel-loving time-inconsistency at larger times.
In the final section I highlighted a potential weakness in the model, relating to its inability to explain framing effects. In order to match the results from Kahneman and Tversky’s experiments, unrealistic assumptions had to be made on the consumer’s utility of money functions. For this reason, further research into frames and spatial time-inconsistency is needed.
Penultimately, I would like to briefly offer some potential topics for future research. Experimental evidence is the foremost important addition to this research. Currently, this paper presents a model for predicting behaviour, but has no empirical merit until sufficient and reliable supporting evidence has been accumulated. In addition, the model is quite simplistic, and struggles to explain other human inconsistencies, thus extensive development would be beneficial. Key avenues are alternative disutility of time and disutility of expenditure functions; particularly kinked functions, quasi-hyperbolic discounted functions, and functions inclusive of physical and psychological obstacles to travel. In addition, introducing more firms and goods, including online shopping, relaxing certain simplifying assumptions and introducing strategic behaviour between the consumer and firm are all profitable suggestions.
Finally, the results in this paper will have important implications to understanding the costs of long travel times and the importance of a more equally distributed local economy. As the model suggests that the vast majority of consumer will exhibit time-inconsistent behaviour, there is an implied cost. This cost will be reduced with equally distributed improvements to infrastructure, such as roads, public transport and delivery services.
6 Appendix
Proposition 1 If \(f\) is convex, linear, or concave, then the time-inconsistent behaviour will be travel-loving, travel-neutral, or travel-averse, respectively.
Instead of assuming a particular form for the time disutility function, assume it to be any function \(f|t\longrightarrow C^T\) where:
- \(f(0)=0\)
- \(f(\infty)=\infty\)
- \(f^{\prime}(t)\gt 0\forall t\in\mathbb{R}_+\)
Under these assumptions, the 1st and 2nd period cost indifference curves are:
1st period:
\[ ∆C_1^F=0⟹\bar{x_2}ε_2=f(2θ^1+s)-f(2θ^2+s)-\bar{x_1}ε_1 \tag{A1} \]
\[ ∆\hat{C_{11}^F}=0⟹\bar{x_2}ε_2=f(2θ^1+s)-f(θ^1+θ^2+2s+ϕ)<0 \tag{A2} \]
\[ ∆\hat{C_{12}^F}=0⟹\bar{x_1}ε_1=f(θ^1+θ^2+2s+ϕ)-f(2θ^2+s)>0 \tag{A3} \]
\[ ∆\tilde{C_{11}^F}=0⟹\bar{x_1}ε_1=f(2θ^1+s)-f(θ^1+θ^2+2s+ϕ)<0 \tag{A4} \]
\[ ∆\tilde{C_{12}^F}=0⟹\bar{x_2}ε_2=f(θ^1+θ^2+2s+ϕ)-f(2θ^2+s)>0 \tag{A5} \]
2nd period:
\[ ∆\hat{C_{21}^F}=0⟹\bar{x_2}ε_2=f(θ^1)-f(θ^2+s+ϕ)<0 \tag{A6} \]
\[ ∆\hat{C_{22}^F}=0⟹\bar{x_1}ε_1=f(θ^1+s+ϕ)-f(θ^2)>0 \tag{A7} \]
\[ ∆\tilde{C_{21}^F}F=0⟹\bar{x_1}ε_1=f(θ^1)-f(θ^2+s+ϕ)<0 \tag{A8} \]
\[ ∆\tilde{C_{22}^F}=0⟹\bar{x_2}ε_2=f(θ^1+s+ϕ)-f(θ^2)>0 \tag{A9} \]
Firstly, an explanation of the three types of time-inconsistent behaviour is needed. Travel-loving is characterised by behaviour where the agent may travel more than first planned, such as in Figure 4. Travel-neutral is when they travel no more or less than planned, thus this behaviour is time-consistent (Figure 3). Travel-averse is the opposite of travel-loving, thus they travel less than planned, such as in Figure 5.
These expressions mean that it is sufficient to show that, for given shapes of the function \(f\), it will yield a graph similar to the respective figures above (i.e. if convex, then it should look like Figure 4; if linear, then like Figure 3; and if concave, then it should look like Figure 5).
As all these graphs will be symmetrical in the line \(\bar{x_2}\epsilon_2=\bar{x_1}\epsilon_1\), it is also sufficient to only check for one pair of cost indifference curves: either north-west or south east quadrant.
Taking the north-west quadrant cost indifference equations for each period, one can compare the two intercepts:
\[ ∆\tilde{C_{21}^F}=0⇒\bar{x_1}ε_1=f(θ^1)-f(θ^2+s+ϕ)⋛\bar{x_1}ε_1=f(2θ^1+s)-f(θ^1+θ^2+2s+ϕ)⇐∆\tilde{C_{11}^F}=0 \tag{A10} \]
\[ ∆\tilde{C_{22}^F}=0⇒\bar{x_2}ε_2=f(θ^1+s+ϕ)-f(θ^2)⋛\bar{x_2}ε_2=f(θ^1+θ^2+2s+ϕ)-f(2θ^2+s)⇐∆\tilde{C_{12}^F}=0 \tag{A11} \]
Notice that both (A10) and (A11) can be put into the form:
\[ ∆\tilde{C_{21}^F}=0⇒\bar{x_1}ε_1=f(A-x)-f(B-x)⋛f(A)-f(B)=\bar{x_1}ε_1⇐∆\tilde{C_{11}^F}=0 \tag{A12} \]
\[ ∆\tilde{C_{22}^F}=0⇒\bar{x_2}ε_2=f(B-y)-f(C-y)⋛f(B)-f(C)=\bar{x_1}ε_1⇐∆\tilde{C_{12}^F}=0 \tag{A13} \]
With \(A=2\theta^1+s\), \(B=\theta^2+s+\phi\), \(C=2\theta^2+s\), \(x=\theta^1+s\) and \(y=\theta^2+s\). From earlier assumptions, \(B>A>C\). Rearranging and dividing by \(x\) and \(y\) respectively gives:
\[ ∆\tilde{C_{21}^F}=0⇒\bar{x_1}ε_1=\frac{f(B)-f(B-x)}{x}⋛\frac{f(A)-f(A-x)}{x}=\bar{x_1}ε_1⇐∆\tilde{C_{11}^F}=0 \tag{A14} \]
\[ ∆\tilde{C_{22}^F}=0⇒\bar{x_2}ε_2=\frac{f(C)-f(C-y)}{y}⋛\frac{f(B)-f(B-y)}{y}=\bar{x_2}ε_2⇐∆\tilde{C_{12}^F}=0 \tag{A15} \]
One may notice that these are equations for two gradients, thus, as \(B>A>C\):
If f is strictly convex, then \(\frac{f\left(B\right)-f\left(B-x\right)}{x}>\frac{f\left(A\right)-f\left(A-x\right)}{x}\) and \(\frac{f\left(C\right)-f\left(C-y\right)}{y}<\frac{f\left(B\right)-f\left(B-y\right)}{y}\), thus the indifference curve in the 2nd period is further left and higher than in the 1st period, implying time-inconsistent behaviour where the agent may travel more than planned. Thus, convex disutility implies travel-loving time-inconsistency.
If f is strictly concave, then \(\frac{f\left(B\right)-f\left(B-x\right)}{x}<\frac{f\left(A\right)-f\left(A-x\right)}{x}\) and \(\frac{f\left(C\right)-f\left(C-y\right)}{y}>\frac{f\left(B\right)-f\left(B-y\right)}{y}\), implying that the 2nd period time indifference curve is lower and further right than the 1st period curve, thus concave disutility implies travel-averse time-inconsistency.
If f is linear, then \(\frac{f\left(B\right)-f\left(B-x\right)}{x}=\frac{f\left(A\right)-f\left(A-x\right)}{x}\) and \(\frac{f\left(C\right)-f\left(C-y\right)}{y}=\frac{f\left(B\right)-f\left(B-y\right)}{y}\), which means that there is no time-inconsistency as the two indifference curves are identical. \(\blacksquare\)
References
Footnotes
Although this is less realistic if one store is far larger or busier than the other, for example.↩︎
Although 7 cannot be optimal it may augment the consumer’s attitude toward 6, making it seem relatively better. This framing effect could be tested for via experimental methods.↩︎
This is a relatively weak reason for putting direct costs on the axes, and not the time costs, but if one were to inspect the indifference curve equations and figures that follow, one would agree that this is the easiest and most diagrammatically sympathetic configuration. In truth, what is put on the axes does not matter, as long as the indifference curve equations are the same. In fact, it may provide some interesting alternative intuition and insight into the model.↩︎
One may question this assumption, but since the firms and goods are identical it does not matter which firm is further away. It is not so interesting if the distance is the same, so one must be larger than the other, and I chose \(\theta^1>\theta^2\).↩︎
There are three special cases: \(\theta^1=\theta^2+\phi\), \(\theta^2=\theta^1+\phi\) and \(\phi=\theta^2+\theta^1\). The diagrams for these will be straight lines and represent situations where the shortest route between the two most separated locations is via the other location. For example, all locations lying on a straight road.↩︎
The subtraction of ‘s’ here ensures that for indifference we must have \(\epsilon_2<0\) even in the extreme case where the triangle rule holds with equality.↩︎
Some influential and interesting papers are by Kydland and Prescott (1977), Laibson (1997) and Wong (2008).↩︎
Put simply, the disutility function cannot be linear. This is in agreement with the aforementioned notion that linear disutility functions are the only functions that will exhibit time-consistent behaviour, or all values of time.↩︎
Parameters are set at \(a=2\), \(b=\frac{a}{\sinh{\left(a\right)}}=\frac{2}{\sinh{\left(2\right)}}\) and \(d=4\), to ensure that all curves intersect at the same point (4, 4).↩︎